Marcos Casagrande
|
ec63b36994
|
perf(ext/event): optimize Event constructor (#20181)
This PR optimizes `Event` constructor
- ~Added a fast path for empty `eventInitDict`~ Removed `EventInit`
dictionary converter
- Don't make `isTrusted` a
[LegacyUnforgeable](https://webidl.spec.whatwg.org/#LegacyUnforgeable)
property. Doing so makes it non-spec compliant but calling
`Object/Reflect.defineProperty` on the constructor is a big bottleneck.
Node did the same a few months ago
https://github.com/nodejs/node/pull/46974. In my opinion, the
performance gains are worth deviating from the spec for a
browser-related property.
**This PR**
```
cpu: 13th Gen Intel(R) Core(TM) i9-13900H
runtime: deno 1.36.1 (x86_64-unknown-linux-gnu)
benchmark time (avg) iter/s (min … max) p75 p99 p995
------------------------------------------------------------------------------- -----------------------------
event constructor no init 36.69 ns/iter 27,257,504.6 (33.36 ns … 42.45 ns) 37.71 ns 39.61 ns 40.07 ns
event constructor 36.7 ns/iter 27,246,776.6 (33.35 ns … 56.03 ns) 37.73 ns 40.14 ns 41.74 ns
```
**main**
```
cpu: 13th Gen Intel(R) Core(TM) i9-13900H
runtime: deno 1.36.1 (x86_64-unknown-linux-gnu)
benchmark time (avg) iter/s (min … max) p75 p99 p995
------------------------------------------------------------------------------- -----------------------------
event constructor no init 380.48 ns/iter 2,628,275.8 (366.66 ns … 399.39 ns) 384.58 ns 398.27 ns 399.39 ns
event constructor 480.33 ns/iter 2,081,882.6 (466.67 ns … 503.47 ns) 484.27 ns 501.28 ns 503.47 ns
```
```js
Deno.bench("event constructor no init", () => {
const event = new Event("foo");
});
Deno.bench("event constructor", () => {
const event = new Event("foo", { bubbles: true, cancelable: false });
});
```
towards https://github.com/denoland/deno/issues/20167
|
2023-08-17 10:35:18 +02:00 |
|
David Sherret
|
10e4b2e140
|
chore: update copyright year to 2023 (#17247)
Yearly tradition of creating extra noise in git.
|
2023-01-02 21:00:42 +00:00 |
|
Mark Ladyshau
|
6743b3227b
|
fix(ext/web): remove ErrorEventInit 's error default (#14809)
|
2022-06-29 14:29:08 +02:00 |
|
Yoshiya Hinosawa
|
4c1053ad33
|
chore: update copyright year (#13434)
|
2022-01-20 16:10:16 +09:00 |
|
Bartek Iwańczuk
|
bedb2adfb0
|
refactor: remove "unitTest" wrapper from cli/tests/unit (#12750)
|
2021-11-23 17:45:18 +01:00 |
|
Leo K
|
3f0cf9619f
|
refactor(cli/tests): remove unnecessary void return types (#11577)
|
2021-08-05 13:08:58 +02:00 |
|
David Sherret
|
586586b791
|
fix: make readonly Event properties readonly (#11106)
|
2021-06-24 14:21:13 -04:00 |
|
David Sherret
|
a2067ec46d
|
fix(inspect): eliminate panic inspecting event classes (#10979)
|
2021-06-24 09:43:41 -04:00 |
|
Luca Casonato
|
af460fc464
|
fix: webidl utils and align Event to spec (#9470)
|
2021-02-13 15:58:12 +01:00 |
|
Nayeem Rahman
|
900953a65a
|
fix(op_crates): Don't use Deno.inspect in op crates (#9332)
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
|
2021-02-09 16:31:46 +01:00 |
|
Yusuke Tanaka
|
d8fd71afdf
|
chore: update copyright to 2021 (#9092)
|
2021-01-11 18:13:41 +01:00 |
|
Bartek Iwańczuk
|
8e914be742
|
build: migrate to dlint (#8176)
This commit migrates repository from using "eslint"
to "dlint" for linting JavaScript code.
|
2020-11-03 16:19:29 +01:00 |
|
Ross Weir
|
9fb4931a95
|
fix(op_crates/web): Expose event properties in console output (#8103)
Fixes #8073
|
2020-10-27 09:22:03 +11:00 |
|
David Sherret
|
df02e31507
|
feat(fmt): Sort named import and export specifiers (#7711)
|
2020-09-27 12:22:32 +02:00 |
|
Ryan Dahl
|
30702e2678
|
move js unit tests to cli/tests (#5678)
|
2020-05-20 17:52:51 -04:00 |
|