Skip to content

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

Merge request reports

Loading