lib: define Event.isTrusted in the prototype
We have been discussing in https://github.com/nodejs/performance/issues/32 whether deviating from the spec with regards to Event.isTrusted
would be acceptable for Node.js in order to avoid a significant performance hit. The spec defines the property as LegacyUnforgeable
, but defining the property in the prototype instead of the constructor produces the following numbers:
./node benchmark/compare.js --new ./node --old ./node_old --runs 30 --filter messageport --filter eventtarget worker events | Rscript benchmark/compare.R
[00:11:52|% 100| 3/3 files | 60/60 runs | 3/3 configs]: Done
confidence improvement accuracy (*) (**) (***)
events/eventtarget-add-remove.js nListener=10 n=1000000 0.25 % ±1.31% ±1.75% ±2.27%
events/eventtarget-add-remove.js nListener=5 n=1000000 -1.05 % ±1.29% ±1.71% ±2.23%
events/eventtarget.js listeners=1 n=1000000 *** 177.72 % ±3.72% ±5.00% ±6.59%
events/eventtarget.js listeners=10 n=1000000 *** 100.93 % ±7.30% ±9.83% ±13.04%
events/eventtarget.js listeners=5 n=1000000 *** 140.92 % ±2.50% ±3.35% ±4.41%
worker/messageport.js n=1000000 style='eventemitter' payload='object' ** -2.88 % ±1.93% ±2.57% ±3.35%
worker/messageport.js n=1000000 style='eventemitter' payload='string' -0.45 % ±1.30% ±1.73% ±2.25%
worker/messageport.js n=1000000 style='eventtarget' payload='object' *** 25.68 % ±2.27% ±3.03% ±3.97%
worker/messageport.js n=1000000 style='eventtarget' payload='string' *** 43.62 % ±2.51% ±3.35% ±4.39%
I'd like to have some feedback whether a change like this would be ok for Node.js (not being in the browser), specially from people more familiar with the standard. If that's the case I'll update the tests that are currently failing. Thanks!