https://github.com/leostera/blast64
:zap: An apparently even faster base64 decoder for Chrome
https://github.com/leostera/blast64
Last synced: over 1 year ago
JSON representation
:zap: An apparently even faster base64 decoder for Chrome
- Host: GitHub
- URL: https://github.com/leostera/blast64
- Owner: leostera
- Created: 2016-08-19T01:24:29.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2018-05-19T02:54:07.000Z (about 8 years ago)
- Last Synced: 2025-03-10T20:43:36.182Z (over 1 year ago)
- Language: HTML
- Homepage:
- Size: 233 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ⚡️ blast64
> Apparently the fastest way of decoding Base64 in Chrome.
## Installation
```
npm install blast64
```
## Usage
```javascript
var blast64 = require('blast64');
// From base64 to UTF-8 string
blast64.decode(base64string);
// From base64 to Uint8Array
blast64.decode_to_array(base64string);
```
## Testing and Benchmark
This is the average time from encoded string to UTF-8 encoded result.
The 💓 was ran `10000000` times.
The [~355kb payload](https://github.com/ostera/blast64/tree/master/test/sample.js) was ran `1000` times.
| Load | atob+TextDecoder | js-base64 | fast64 | base64-js | blast64 |
|--------|------------------|------------|-----------|-----------|-----------|
| 💓 | 0.0019 ms | 0.0025 ms | 0.0031 ms | 0.0018 ms | 0.0010 ms |
| ~355kb | 31.257 ms | 4.5263 ms | 2.9529 ms | 1.7501 ms | 1.3920 ms |
And this are the average times without the `TextDecoder` step where relevant:
| Load | fast64[0] | atob | blast64.decode_to_array |
|--------|-----------|-----------|---------------------------|
| 💓 | 0.0017 ms | 0.0008 ms | 0.0005 ms |
| ~355kb | 2.5336 ms | 1.7580 ms | 1.0701 ms |
[0] `fast64.decode(str, {uint8Array: true})`
Not bad for a few hours of hacking I'd say! But it's still only decoding, would have to sit down and make it encode as well at some point.