diff options
author | Brian Turek <brian.turek@gmail.com> | 2009-08-26 00:41:18 +0000 |
---|---|---|
committer | Brian Turek <brian.turek@gmail.com> | 2009-08-26 00:41:18 +0000 |
commit | e10c1bc0f11b421cf5f4f275054f3dfb7c051c3c (patch) | |
tree | 1d45065b0a87407454b9543f149d781951bfa668 | |
parent | 3a568dec1d7d979f32217e7b95645e52ca6d40d7 (diff) | |
download | jsSHA-e10c1bc0f11b421cf5f4f275054f3dfb7c051c3c.zip jsSHA-e10c1bc0f11b421cf5f4f275054f3dfb7c051c3c.tar.gz jsSHA-e10c1bc0f11b421cf5f4f275054f3dfb7c051c3c.tar.bz2 |
Did some basic optimizations on "math" functions, ~10% speedup
-rw-r--r-- | src/sha.js | 36 |
1 files changed, 13 insertions, 23 deletions
@@ -158,11 +158,7 @@ function jsSHA(srcString, inputFormat) { * @return The x shifted circularly by n bits */ var rotl_32 = function (x, n) { - if (n < 32) { - return (x << n) | (x >>> (32 - n)); - } else { - return x; - } + return (x << n) | (x >>> (32 - n)); }; /* @@ -174,11 +170,7 @@ function jsSHA(srcString, inputFormat) { * @return The x shifted circularly by n bits */ var rotr_32 = function (x, n) { - if (n < 32) { - return (x >>> n) | (x << (32 - n)); - } else { - return x; - } + return (x >>> n) | (x << (32 - n)); }; /* @@ -190,15 +182,16 @@ function jsSHA(srcString, inputFormat) { * @return The x shifted circularly by n bits */ var rotr_64 = function (x, n) { - if (n < 32) { + if (n <= 32) { return new Int_64( (x.highOrder >>> n) | (x.lowOrder << (32 - n)), (x.lowOrder >>> n) | (x.highOrder << (32 - n)) ); - } else if (n === 32) { // Apparently in JS, shifting a 32-bit value by 32 yields original value - return new Int_64(x.lowOrder, x.highOrder); } else { - return rotr_64(rotr_64(x, 32), n - 32); + return new Int_64( + (x.lowOrder >>> n) | (x.highOrder << (32 - n)), + (x.highOrder >>> n) | (x.lowOrder << (32 - n)) + ); } }; @@ -211,11 +204,7 @@ function jsSHA(srcString, inputFormat) { * @return The x shifted by n bits */ var shr_32 = function (x, n) { - if (n < 32) { - return x >>> n; - } else { - return 0; - } + return x >>> n; }; /* @@ -227,15 +216,16 @@ function jsSHA(srcString, inputFormat) { * @return The x shifted by n bits */ var shr_64 = function (x, n) { - if (n < 32) { + if (n <= 32) { return new Int_64( x.highOrder >>> n, x.lowOrder >>> n | (x.highOrder << (32 - n)) ); - } else if (n === 32) { // Apparently in JS, shifting a 32-bit value by 32 yields original value - return new Int_64(0, x.highOrder); } else { - return shr_64(shr_64(x, 32), n - 32); + return new Int_64( + 0, + x.highOrder << (32 - n) + ); } }; |