1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-21 23:04:45 -05:00
denoland-deno/ext/web
Marcos Casagrande ac5fcf626a
perf(ext/web): add op_encode_binary_string (#16352)
Add a new op to use in `reader.readAsBinaryString(blob)`.

```
File API binary string: 400b    35.12 µs/iter    (21.93 µs … 3.27 ms)  31.87 µs 131.95 µs 217.63 µs
File API binary string: 4kb     46.49 µs/iter    (29.36 µs … 4.42 ms)   42.5 µs 122.48 µs  155.1 µs
File API binary string: 2.2mb    4.17 ms/iter     (1.75 ms … 8.54 ms)   5.48 ms   7.39 ms   8.54 ms
```

**main**

```
benchmark                          time (avg)             (min … max)       p75       p99      p995
--------------------------------------------------------------------- -----------------------------
File API binary string: 400b    56.17 µs/iter  (43.09 µs … 784.52 µs)   49.6 µs 177.18 µs 241.23 µs
File API binary string: 4kb     277.2 µs/iter   (240.29 µs … 1.84 ms) 269.87 µs 649.79 µs 774.46 µs
File API binary string: 2.2mb  180.03 ms/iter (173.32 ms … 194.35 ms) 182.54 ms 194.35 ms 194.35 ms
```

It can also handle bigger files, when encoding a 200mb file, main
crashes with OOM

```
<--- Last few GCs --->

[132677:0x560504676550]     5012 ms: Scavenge 417.3 (434.6) -> 401.8 (434.6) MB, 0.1 / 0.0 ms  (average mu = 0.824, current mu = 0.825) allocation failure; 
[132677:0x560504676550]     5038 ms: Scavenge 417.3 (434.6) -> 401.8 (434.6) MB, 0.1 / 0.0 ms  (average mu = 0.824, current mu = 0.825) allocation failure; 
[132677:0x560504676550]     5064 ms: Scavenge 417.3 (434.6) -> 401.8 (434.6) MB, 0.1 / 0.0 ms  (average mu = 0.824, current mu = 0.825) allocation failure;
```
2022-10-24 20:27:22 +02:00
..
benches perf: use fast api for op_now (#15643) 2022-08-28 12:21:49 +05:30
00_infra.js perf(ops): Monomorphic sync op calls (#15337) 2022-08-11 15:56:56 +02:00
01_dom_exception.js fix(ext/web): align DOMException better with spec (#15097) 2022-07-20 10:12:18 +02:00
01_mimesniff.js cleanup(web, fetch): dedupe minesniff / "extract a MIME type" algorithm (#14044) 2022-03-20 14:31:12 +01:00
02_event.js experiment(ext/web): Don't expose event classes during the bootstrap phase (#16213) 2022-10-24 16:14:17 +02:00
02_structured_clone.js fix(core): Don't override structured clone error messages from V8 (#13942) 2022-03-14 19:35:15 +01:00
02_timers.js perf(ext/web): optimize timer cancellation (#16316) 2022-10-17 16:59:16 +05:30
03_abort_signal.js experiment(ext/web): Don't expose event classes during the bootstrap phase (#16213) 2022-10-24 16:14:17 +02:00
04_global_interfaces.js experiment(ext/web): Don't expose event classes during the bootstrap phase (#16213) 2022-10-24 16:14:17 +02:00
05_base64.js perf(ops): Monomorphic sync op calls (#15337) 2022-08-11 15:56:56 +02:00
06_streams.js perf(ext/streams): fast path when consuming body of tee'd stream (#16329) 2022-10-24 13:13:20 +02:00
06_streams_types.d.ts chore: update copyright year (#13434) 2022-01-20 16:10:16 +09:00
08_text_encoding.js perf(ext/web/encoding): avoid copy in decode (#16364) 2022-10-23 21:09:15 +02:00
09_file.js perf(ops): Monomorphic sync op calls (#15337) 2022-08-11 15:56:56 +02:00
10_filereader.js perf(ext/web): add op_encode_binary_string (#16352) 2022-10-24 20:27:22 +02:00
11_blob_url.js perf(ops): Monomorphic sync op calls (#15337) 2022-08-11 15:56:56 +02:00
12_location.js chore: update copyright to 2022 (#13306) 2022-01-07 22:09:52 -05:00
13_message_port.js experiment(ext/web): Don't expose event classes during the bootstrap phase (#16213) 2022-10-24 16:14:17 +02:00
14_compression.js perf(ops): Monomorphic sync op calls (#15337) 2022-08-11 15:56:56 +02:00
15_performance.js experiment(ext/web): Don't expose event classes during the bootstrap phase (#16213) 2022-10-24 16:14:17 +02:00
blob.rs chore(runtime): Make some ops in ext and runtime infallible. (#14589) 2022-05-13 10:36:31 +02:00
Cargo.toml chore: forward v1.26.2 to main (#16331) 2022-10-17 23:11:16 +02:00
compression.rs perf(ops): inline &[u8] arguments and enable fast API (#15731) 2022-09-07 16:21:47 +05:30
internal.d.ts experiment(ext/web): Don't expose event classes during the bootstrap phase (#16213) 2022-10-24 16:14:17 +02:00
lib.deno_web.d.ts chore(ext/web): fix typo (#16248) 2022-10-12 07:47:15 +00:00
lib.rs perf(ext/web): add op_encode_binary_string (#16352) 2022-10-24 20:27:22 +02:00
message_port.rs chore(web, worker): Use DetachedBuffer for postMessage ops (#15133) 2022-07-11 17:27:33 +02:00
README.md Rename extensions/ directory to ext/ (#11643) 2021-08-11 12:27:05 +02:00
timers.rs perf(ext/web): optimize timer cancellation (#16316) 2022-10-17 16:59:16 +05:30

deno web

Op crate that implements Event, TextEncoder, TextDecoder and File API (https://w3c.github.io/FileAPI).

Testing for text encoding is done via WPT in cli/.