diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-09-30 20:04:40 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-30 20:04:40 +0530 |
commit | 1cda3840ff673512f7c6d58fa8402c35c760bc3b (patch) | |
tree | b633a022666a5538abd9c5eab395a0ec62733a83 /ext/node | |
parent | 74e4c7f80ff1cee534f2da2870d0ddf73f7cb932 (diff) |
perf(node): use faster utf8 byte length in Buffer#from (#20746)
Use the `core.byteLength` op for string utf8 length calculation in
`node:buffer`
```
# This patch
file:///Users/divy/gh/deno/buffer.mjs
benchmark time (avg) iter/s (min … max) p75 p99 p995
----------------------------------------------------------------- -----------------------------
Buffer#from 272.11 ns/iter 3,675,029.3 (268.41 ns … 301.15 ns) 271.62 ns 295.5 ns 301.15 ns
# Deno 1.37.1
file:///Users/divy/gh/deno/buffer.mjs
benchmark time (avg) iter/s (min … max) p75 p99 p995
----------------------------------------------------------------- -----------------------------
Buffer#from 411.28 ns/iter 2,431,428.8 (393.82 ns … 439.92 ns) 418.85 ns 434.4 ns 439.92 ns
```
Diffstat (limited to 'ext/node')
-rw-r--r-- | ext/node/polyfills/internal/buffer.mjs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/node/polyfills/internal/buffer.mjs b/ext/node/polyfills/internal/buffer.mjs index 29c0a5584..6f3121233 100644 --- a/ext/node/polyfills/internal/buffer.mjs +++ b/ext/node/polyfills/internal/buffer.mjs @@ -35,6 +35,8 @@ import { import { atob, btoa } from "ext:deno_web/05_base64.js"; import { Blob } from "ext:deno_web/09_file.js"; +const { core } = globalThis.__bootstrap; + export { atob, Blob, btoa }; const utf8Encoder = new TextEncoder(); @@ -2126,7 +2128,7 @@ export function readInt40BE(buf, offset = 0) { } export function byteLengthUtf8(str) { - return utf8Encoder.encode(str).length; + return core.byteLength(str); } function base64ByteLength(str, bytes) { |