At some point, I wrote this piece about how much computing file hashes in node.js used to suck.
Fast forward for about two and half years. At least under OS X, the situation is dramatically changed:
# node.js implementation time node sha256.js xubuntu-12.04.4-desktop-amd64.iso b952308743f1cce2089e03714a54774070891efaef4e7e537b714ee64295efe6 xubuntu-12.04.4-desktop-amd64.iso node sha256.js xubuntu-12.04.4-desktop-amd64.iso 5.33s user 0.89s system 108% cpu 5.729 total time node sha256.js xubuntu-12.04.4-desktop-amd64.iso b952308743f1cce2089e03714a54774070891efaef4e7e537b714ee64295efe6 xubuntu-12.04.4-desktop-amd64.iso node sha256.js xubuntu-12.04.4-desktop-amd64.iso 4.80s user 0.63s system 108% cpu 4.977 total |
# GNU coreutils sha256sum implementation time gsha256sum xubuntu-12.04.4-desktop-amd64.iso b952308743f1cce2089e03714a54774070891efaef4e7e537b714ee64295efe6 xubuntu-12.04.4-desktop-amd64.iso gsha256sum xubuntu-12.04.4-desktop-amd64.iso 6.23s user 0.18s system 99% cpu 6.432 total time gsha256sum xubuntu-12.04.4-desktop-amd64.iso b952308743f1cce2089e03714a54774070891efaef4e7e537b714ee64295efe6 xubuntu-12.04.4-desktop-amd64.iso gsha256sum xubuntu-12.04.4-desktop-amd64.iso 6.28s user 0.17s system 98% cpu 6.529 total |
# openssl 0.9.8y implementation time openssl dgst -sha256 xubuntu-12.04.4-desktop-amd64.iso SHA256(xubuntu-12.04.4-desktop-amd64.iso)= b952308743f1cce2089e03714a54774070891efaef4e7e537b714ee64295efe6 openssl dgst -sha256 xubuntu-12.04.4-desktop-amd64.iso 6.28s user 0.25s system 99% cpu 6.565 total time openssl dgst -sha256 xubuntu-12.04.4-desktop-amd64.iso SHA256(xubuntu-12.04.4-desktop-amd64.iso)= b952308743f1cce2089e03714a54774070891efaef4e7e537b714ee64295efe6 openssl dgst -sha256 xubuntu-12.04.4-desktop-amd64.iso 6.28s user 0.24s system 98% cpu 6.632 total |
It is nice to see that it improved so much that it sits on top of the performance list, even though the difference is pretty much negligible now. It even makes use of more than one CPU core.