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
```
This commit is contained in:
Divy Srivastava 2023-09-30 20:04:40 +05:30 committed by GitHub
parent 74e4c7f80f
commit 1cda3840ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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) {