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