Comments (2)
By default, WebAssembly is executed on the main thread. The only thing, which is parallelized, is the compilation of the binary: Chrome doesn't allow compiling larger binaries than 4kb in a sync manner. I also did some experiments running the hash calculation in Web Workers, but the communication latency is too high to be worth it. So the only reason, why hash-wasm is using promises, is because the restrictions imposed by the browser APIs.
Why would you need cancelation? In my point of view, the streaming input (createXYZ() functions) can be already used to hash large files in smaller blocks. You can stop anytime feeding update() with new chunks.
from hash-wasm.
You can stop anytime feeding update() with new chunks.
I guess I didn't think about that. I need to wrap these computations in asynchronous effects for another library, and as a part of the async effect spec, I need to be able to cancel. I will probably use the update
then. I can't say I fully understand the performance characteristics of making new Wasm instance as noted in the README, but it does appear to be the way to run it in parallel.
It's good to know that the worker option wasn't valuable in many cases. Thanks.
from hash-wasm.
Related Issues (20)
- Output Uint8Array HOT 1
- Browser-only implementation HOT 2
- Synchronous API HOT 3
- Update README benchmarks to mention noble-hashes HOT 1
- Can you add benchmarks against hasha? HOT 4
- After opening the console, the md5 calculation speed is greatly reduced HOT 2
- Password hashing using argon2id HOT 2
- React-Native Support (Android and iOS) HOT 3
- blake3 SIMD version HOT 4
- Expose the Argon2 version number constant? HOT 3
- WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm memory for new instance HOT 7
- Weird performance of blake3 depending on presence of Chrome Dev Tools HOT 5
- Add warning to readme about DevTools performance glitch in Chrome HOT 1
- Why is node/optimize commented out in build.sh? HOT 2
- When to support sm2?
- Is there any way to optimize it? HOT 4
- WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm memory for new instance HOT 17
- Feature request: Add `secret` parameter to argon2 implementation HOT 4
- Who's using hash-wasm?
- Consider shipping wasm files to npm HOT 2
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 hash-wasm.