Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v9.x] async_hooks: use typed array stack as fast path #18290

Closed
wants to merge 1 commit into from

Commits on Jan 22, 2018

  1. async_hooks: use typed array stack as fast path

    - Communicate the current async stack length through a
      typed array field rather than a native binding method
    - Add a new fixed-size `async_ids_fast_stack` typed array
      that contains the async ID stack up to a fixed limit.
      This increases performance noticeably, since most of the time
      the async ID stack will not be more than a handful of
      levels deep.
    - Make the JS `pushAsyncIds()` and `popAsyncIds()` functions
      do the same thing as the native ones if the fast path
      is applicable.
    
    Benchmarks:
    
        $ ./node benchmark/compare.js --new ./node --old ./node-master --runs 10 --filter next-tick process | Rscript benchmark/compare.R
        [00:03:25|% 100| 6/6 files | 20/20 runs | 1/1 configs]: Done
                                                       improvement confidence      p.value
         process/next-tick-breadth-args.js millions=4     19.72 %        *** 3.013913e-06
         process/next-tick-breadth.js millions=4          27.33 %        *** 5.847983e-11
         process/next-tick-depth-args.js millions=12      40.08 %        *** 1.237127e-13
         process/next-tick-depth.js millions=12           77.27 %        *** 1.413290e-11
         process/next-tick-exec-args.js millions=5        13.58 %        *** 1.245180e-07
         process/next-tick-exec.js millions=5             16.80 %        *** 2.961386e-07
    
    PR-URL: nodejs#17780
    Reviewed-By: James M Snell <jasnell@gmail.com>
    addaleax committed Jan 22, 2018
    Configuration menu
    Copy the full SHA
    7fc062d View commit details
    Browse the repository at this point in the history