Title: events: avoid cloning listeners array on every emit by gurgunday · Pull Request #62261 · nodejs/node · GitHub
Open Graph Title: events: avoid cloning listeners array on every emit by gurgunday · Pull Request #62261 · nodejs/node
X Title: events: avoid cloning listeners array on every emit by gurgunday · Pull Request #62261 · nodejs/node
Description: This PR does 2 improvements: Do not clone the listeners on each emit, clone when we're either adding or removing listeners Even when we're adding or removing listeners, if we're not currently emitting, avoid cloning again Results: Branch: ./node benchmark/run.js --filter ee-emit events events/ee-emit.js events/ee-emit.js listeners=1 argc=0 n=2000000: 91,903,668.22922815 > events/ee-emit.js listeners=5 argc=0 n=2000000: 31,178,549.48221315 > events/ee-emit.js listeners=10 argc=0 n=2000000: 18,218,586.602051415 events/ee-emit.js listeners=1 argc=2 n=2000000: 97,625,065.27455927 > events/ee-emit.js listeners=5 argc=2 n=2000000: 30,786,518.583512284 > events/ee-emit.js listeners=10 argc=2 n=2000000: 17,759,695.723843552 events/ee-emit.js listeners=1 argc=4 n=2000000: 95,971,210.17248763 > events/ee-emit.js listeners=5 argc=4 n=2000000: 30,290,753.36889973 > events/ee-emit.js listeners=10 argc=4 n=2000000: 17,108,737.480991445 events/ee-emit.js listeners=1 argc=10 n=2000000: 93,870,086.24126433 > events/ee-emit.js listeners=5 argc=10 n=2000000: 28,639,532.56158767 > events/ee-emit.js listeners=10 argc=10 n=2000000: 16,616,102.896280617 main: ./node benchmark/run.js --filter ee-emit events events/ee-emit.js events/ee-emit.js listeners=1 argc=0 n=2000000: 92,364,529.17596893 > events/ee-emit.js listeners=5 argc=0 n=2000000: 29,932,147.413670897 > events/ee-emit.js listeners=10 argc=0 n=2000000: 15,313,442.157135993 events/ee-emit.js listeners=1 argc=2 n=2000000: 98,371,745.94257125 > events/ee-emit.js listeners=5 argc=2 n=2000000: 29,668,674.924437966 > events/ee-emit.js listeners=10 argc=2 n=2000000: 15,159,257.397702452 events/ee-emit.js listeners=1 argc=4 n=2000000: 96,956,966.8137633 > events/ee-emit.js listeners=5 argc=4 n=2000000: 29,187,937.01091416 > events/ee-emit.js listeners=10 argc=4 n=2000000: 14,862,263.968670348 events/ee-emit.js listeners=1 argc=10 n=2000000: 94,272,546.83507264 > events/ee-emit.js listeners=5 argc=10 n=2000000: 27,359,329.00041816 > events/ee-emit.js listeners=10 argc=10 n=2000000: 11,452,222.952059666
Open Graph Description: This PR does 2 improvements: Do not clone the listeners on each emit, clone when we're either adding or removing listeners Even when we're adding or removing listeners, if we're not cu...
X Description: This PR does 2 improvements: Do not clone the listeners on each emit, clone when we're either adding or removing listeners Even when we're adding or removing listeners, if we&#...
Opengraph URL: https://github.com/nodejs/node/pull/62261
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:090cc6d3-f920-9f7c-22ff-649ddff1fad9 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | A1C6:3503E9:C73FF82:CD03D61:6A4C50B5 |
| html-safe-nonce | 75c3d3bd660682cb5c7a0816487f5762be9183937d441e0ce2d6b3b6d10636c3 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMUM2OjM1MDNFOTpDNzNGRjgyOkNEMDNENjE6NkE0QzUwQjUiLCJ2aXNpdG9yX2lkIjoiMjQ0ODE0MjY2OTE1MjI3NjY2MSIsInJlZ2lvbl9lZGdlIjoic2VhIiwicmVnaW9uX3JlbmRlciI6InNlYSJ9 |
| visitor-hmac | f90039ba55521fb17f638bb967eda008a3cf5b44ceb30116e27223d11dfc8856 |
| hovercard-subject-tag | pull_request:3400868678 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/nodejs/node/pull/62261/files |
| twitter:image | https://avatars.githubusercontent.com/u/74139498?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/74139498?s=400&v=4 |
| og:image:alt | This PR does 2 improvements: Do not clone the listeners on each emit, clone when we're either adding or removing listeners Even when we're adding or removing listeners, if we're not cu... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/nodejs/node git https://github.com/nodejs/node.git |
| octolytics-dimension-user_id | 9950313 |
| octolytics-dimension-user_login | nodejs |
| octolytics-dimension-repository_id | 27193779 |
| octolytics-dimension-repository_nwo | nodejs/node |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 27193779 |
| octolytics-dimension-repository_network_root_nwo | nodejs/node |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 65d78903193f110d7a9d1f8587c6dc3cb911aae0 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width