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.

Reply via email to