nv-string-utf8buf-foreach
v1.0.1
Published
- for each codepoint directly on utf8-buf
Readme
nv-string-utf8buf-foreach
- for each codepoint directly on utf8-buf
- 速度:比 Node.js 标准的
Buffer.toString() -> for...of遍历快 2.68倍。 - 零内存分配:直接在
Uint8Array上进行位运算提取码点,避免了大字符串对象产生的 GC 压力。 - 流式支持:内置跨 Chunk 补偿逻辑,完美处理被切断的多字节字符(Emoji/中文)。
📊 性能基准测试 (Performance Battle)
基于 10.00 MB 的混合文本 Buffer,在 Node.js 1000 轮测试下的对比结果:
| 方法 | 平均耗时 (Avg) | 最佳耗时 (Best) |
| :--- | :--- | :--- |
| Node Standard (toString + for-of) | 107.10 ms | 84.60 ms |
| Mach Direct (for_each_cpt) | 33.88 ms | 31.52 ms |
📦 安装与使用
const for_each_cpt = require("nv-string-utf8buf-foreach");
let remainder = null; // 用于存储跨 chunk 的残余字节
// 模拟流式输入
function onData(chunk) {
remainder = for_each_cpt(chunk, (cpt) => {
console.log("解析出码点:", cpt);
// 在此处驱动你的状态机
}, remainder);
}
const str = u8a.toString('utf8');
for (let char of str) {
const cpt = char.codePointAt(0);
// 在此处驱动你的状态机
}