Hello! This is a follow-up on the discussion started in: https://codereview.chromium.org/1324023007/ .
There appears to be a performance regression in the recent v8 versions. >From my tests the regression comes from the introduction of the `std::map`s to keep the live array buffers. Iterating over it is pretty much fast, but inserting the buffers into it has non-linear time (because `std::map`s are powered by Red-Black trees), thus slowing the things down. What's really interesting is that External strings solve the same problem differently and (it looks like) more efficiently. They are just using lists, and checking the marks on the list during GC. Insertion into the list is cheap, and can't really outperform the `std::map` insertion. Iteration with reading marks appears to be taking linear time, so it is still better than inserting things into the `std::map`. Even more, we do insertions into the maps during each GC cycle too, so the time is definitely bigger than just for the lists+markings. I suggest to merge these algorithms, and just use one class to manage both of them. In my opinion, the class should be using lists to improve the performance. I'm open to any kind of suggestions, though! Thank you, Fedor. -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
