Skip to content

Commit 82438ad

Browse files
committed
buffer: optimize writing short strings
1 parent 5d6c76a commit 82438ad

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

benchmark/buffers/buffer-write-string.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
const common = require('../common.js');
44
const bench = common.createBenchmark(main, {
55
encoding: [
6-
'', 'utf8', 'ascii', 'hex', 'utf16le', 'latin1',
6+
'utf8',
77
],
8-
args: [ '', 'offset', 'offset+length' ],
9-
len: [2048],
8+
args: [ '' ],
9+
len: [1,8,16,32, 64],
1010
n: [1e6],
1111
});
1212

lib/buffer.js

+18
Original file line numberDiff line numberDiff line change
@@ -1108,6 +1108,24 @@ Buffer.prototype.write = function write(string, offset, length, encoding) {
11081108
}
11091109
}
11101110

1111+
const len = string.length;
1112+
if (len <= 32 && len <= length) {
1113+
let n = 0;
1114+
while (true) {
1115+
const code = string.charCodeAt(n);
1116+
if (code >= 128) {
1117+
break;
1118+
}
1119+
1120+
this[offset + n] = code;
1121+
n++;
1122+
1123+
if (n === len) {
1124+
return len;
1125+
}
1126+
}
1127+
}
1128+
11111129
if (!encoding)
11121130
return this.utf8Write(string, offset, length);
11131131

0 commit comments

Comments
 (0)