mirror of https://github.com/lukechilds/node.git
Browse Source
The fast base64 decoder used to switch to the slow one permanently when it saw a whitespace or other garbage character. Since the most common situation such characters may be encountered in is line-wrapped base64 data, a more profitable strategy is to decode a single 24-bit group with the slow decoder and then continue running the fast algorithm. PR-URL: https://github.com/nodejs/node/pull/12146 Ref: https://github.com/nodejs/node/issues/12114 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Trevor Norris <trev.norris@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>v6
committed by
James M Snell
2 changed files with 61 additions and 34 deletions
@ -0,0 +1,26 @@ |
|||
'use strict'; |
|||
|
|||
const common = require('../common.js'); |
|||
|
|||
const bench = common.createBenchmark(main, { |
|||
n: [32], |
|||
}); |
|||
|
|||
function main(conf) { |
|||
const n = +conf.n; |
|||
const charsPerLine = 76; |
|||
const linesCount = 8 << 16; |
|||
const bytesCount = charsPerLine * linesCount / 4 * 3; |
|||
|
|||
const line = 'abcd'.repeat(charsPerLine / 4) + '\n'; |
|||
const data = line.repeat(linesCount); |
|||
// eslint-disable-next-line no-unescaped-regexp-dot
|
|||
data.match(/./); // Flatten the string
|
|||
const buffer = Buffer.alloc(bytesCount, line, 'base64'); |
|||
|
|||
bench.start(); |
|||
for (var i = 0; i < n; i++) { |
|||
buffer.base64Write(data, 0, bytesCount); |
|||
} |
|||
bench.end(n); |
|||
} |
Loading…
Reference in new issue