buffer: add asString static method
My microbenchmarks show 33% improvement for the following microbenchmark. (Fixes https://github.com/nodejs/performance/issues/3)
cpu: Apple M1 Max
runtime: node v20.0.0-pre (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p995
--------------------------------------------------------------- -----------------------------
new Buffer().toString() 1.65 µs/iter (1.41 µs … 1.95 µs) 1.78 µs 1.95 µs 1.95 µs
Buffer.asString() 1.07 µs/iter (1 µs … 1.21 µs) 1.09 µs 1.21 µs 1.21 µs
TextDecoder.decode() 8.67 µs/iter (8.55 µs … 8.78 µs) 8.7 µs 8.78 µs 8.78 µs
Benchmark:
import { bench, run } from "mitata"
import { Buffer } from "node:buffer"
const encoder = new TextEncoder()
const decoded = 'hello world'.repeat(1000)
const encoded = encoder.encode(decoded)
bench("new Buffer().toString()", () => Buffer.from(encoded).toString())
bench("Buffer.asString()", () => Buffer.asString(encoded, 'utf8'))
bench("TextDecoder.decode()", () => (new TextDecoder()).decode(encoded))
await run()
CC @nodejs/buffer