mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 13:48:44 +02:00
string_decoder: rewrite implementation
This commit provides a rewrite of StringDecoder that both improves performance (for non-single-byte encodings) and understandability. Additionally, StringDecoder instantiation performance has increased considerably due to inlinability and more efficient encoding name checking. PR-URL: https://github.com/nodejs/node/pull/6777 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
435e673efd
commit
d23b7d2656
5 changed files with 322 additions and 216 deletions
22
benchmark/string_decoder/string-decoder-create.js
Normal file
22
benchmark/string_decoder/string-decoder-create.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
'use strict';
|
||||
const common = require('../common.js');
|
||||
const StringDecoder = require('string_decoder').StringDecoder;
|
||||
|
||||
const bench = common.createBenchmark(main, {
|
||||
encoding: [
|
||||
'ascii', 'utf8', 'utf-8', 'base64', 'ucs2', 'UTF-8', 'AscII', 'UTF-16LE'
|
||||
],
|
||||
n: [25e6]
|
||||
});
|
||||
|
||||
function main(conf) {
|
||||
const encoding = conf.encoding;
|
||||
const n = conf.n | 0;
|
||||
|
||||
bench.start();
|
||||
for (var i = 0; i < n; ++i) {
|
||||
const sd = new StringDecoder(encoding);
|
||||
!!sd.encoding;
|
||||
}
|
||||
bench.end(n);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue