Comments (2)
Almost all of this comes from the way you are building the result string, context_data_string += … lines.
Replacing context_data_string
with an Array and doing push
/join('')
decreases 900M to 80M.
You could also preallocate the Array of some fixed length (depending on the input length) and manually use [i++]
on that. I haven't measured which of those the variants (string, Array.prototype.push, preallocated Array) is faster.
from lz-string.
Ok, here are the test results with iojs:
50000 iterations, String concat (current): 31 seconds, 905 MiB.
50000 iterations, Array push/join: 29 seconds, 81 MiB.
50000 iterations, Array prealloc/[i++]/join: 32 seconds, 81 MiB.
50000 iterations, Array push/join + ES6: 15 seconds, 79 MiB.
100000 iterations, String concat (current): 1212 seconds, 1760 MiB, the gc kicked in,
100000 iterations, Array push/join: 57 seconds, 114 MiB.
100000 iterations, Array prealloc/[i++]/join: 69 seconds, 115 MiB.
50000 iterations, Array push/join + ES6: 30 seconds, 107 MiB.
200000 iterations, String concat (current): I terminated it after 100 minutes, 2450 MiB, the gc kicked in,
200000 iterations, Array push/join: 120 seconds, 172 MiB.
200000 iterations, Array prealloc/[i++]/join: 139 seconds, 172 MiB.
50000 iterations, Array push/join + ES6: 61 seconds, 164 MiB.
There is enough free memory and swap is disabled, so it didn't affect the results.
from lz-string.
Related Issues (20)
- Crash with large strings when running on Hermes (React Native)
- Is there a way to allow custom dictionaries? HOT 9
- How to realize that only specified characters are allowed to appear in the compression result? HOT 1
- LZ-String port to current typescript HOT 9
- Tag for v1.5.0 HOT 2
- Version 2 TODO list HOT 15
- Feature request: compress to source-compatible character set HOT 1
- New port for a linux executable HOT 1
- Can utf-8 codes be avoided in the output? HOT 10
- `decompressFromBase64` can return `null` HOT 7
- Docs: JSPerf.com links are no longer valid
- Docs: A Complete Demo for various compression/decompression HOT 3
- Docs: TSDoc HOT 3
- License Inconsistencies HOT 5
- Community Question: Breaking Changes and Version 2! HOT 10
- [email protected] build with warnings HOT 4
- Feature request: a non minified js file as a result of building v2 HOT 2
- Chrome virus warning with compressToEncodedURIComponent URL HOT 2
- CLI support for decompressing base64 encoded files HOT 1
- Please investigate the slow (irresponsible) LZString issue in Edge HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lz-string.