src,lib,buffer: improve atob / btoa performance
Extract modp_b64
dependence from Chromium to improve performance of atob()
and btoa()
.
Refs: https://github.com/chromium/chromium/tree/92.0.4490.1/third_party/modp_b64
Benchmark
- 12 Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
- MemTotal: 32657380 kB
Old logic
$ ./node benchmark/run.js --filter buffer-atob.js buffers
buffers/buffer-atob.js
buffers/buffer-atob.js n=32 len=65536: 487.7280162769471
$ ./node benchmark/run.js --filter buffer-btoa.js buffers
buffers/buffer-btoa.js
buffers/buffer-btoa.js n=32 len=67108864: 2.4594857665824494
Logic of this PR
$ ./node benchmark/run.js --filter buffer-atob.js buffers
buffers/buffer-atob.js
buffers/buffer-atob.js n=32 len=65536: 10,588.320156389489
$ ./node benchmark/run.js --filter buffer-btoa.js buffers
buffers/buffer-btoa.js
buffers/buffer-btoa.js n=32 len=67108864: 3.503510145848807