we used to have such a list and that resulted in second long pauses during gc when traversing the list. Using the map spreads out this work to the incremental marking, so there are no long pauses anymore. On Wed, Sep 9, 2015 at 12:41 PM Fedor Indutny <[email protected]> wrote:
> Hello again! > > Kindly reminding about this question. > > Thank you, > Fedor. > > On Fri, Sep 4, 2015 at 2:06 AM, Fedor Indutny <[email protected]> wrote: > >> 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.
