Show HN: SHA1 Checksum Large Files with HTML5 Typed Arrays and Web Workers
antimatter15.github.com
antimatter15.github.com
Unfortunately this implementation is way too slow for large files. In Chrome 15 OSX running a Core 2 Duo 2.4GHz an ~650MB file takes about 9.3 minutes to calculate the resultant SHA. Using openssl the hash generation takes ~8 seconds. (Bearing in mind that it's not fair to compare an interpreted script against a compiled program.)
I think it would be cool if HTML5 could include something similar. You know, native speed md5, sha1, secure random number, HMAC , etc.
Now compare that to HashSum, a a Silverlight-based implementation of the SHA-1 (I verified that it generates the same result), I clocked it and it is 20X faster than the Javascript implementation, and ~3X slower than native. Try it at http://www.hashsum.com (I wrote it; Silverlight required; sorry about the ad/layout, it was an "exercise" a while back).
So HTML5/Javascript is the future, and the future does not include Flash/Silverlight. Perhaps. But this experiment shows that Javascript is clearly way too slow compared to native or plugin. You could argue that the plugin-based scenario is going out of favor. Politics, competition, distribution, etc, are all valid reasons. But "Javascript is now just as fast" isn't one, because it is not. Those who are gung-ho about how fast Javascript is needs to write their own SHA-1 implementation that beats http://www.hashsum.com ... or at least not be blown away by it.
//Firefox doesn't support FileReader inside WebWorkers
I noticed that Firefox has FileReaderSync available only from Web Workers. https://developer.mozilla.org/en/DOM/FileReaderSync
Per spec (http://dev.w3.org/2006/webapi/FileAPI/#readingOnThreads) web workers can use both. The use cases I have will work fine with the sync interface, but I wonder why Firefox chose not to provide the async option in workers.
If you don't mind my asking, what's the license on this, if I'd like to use this in one of my projects?