Performance

jsbn is one of the fastest JavaScript bignum libraries currently available. Google uses it as part of their benchmark suite for JavaScript.

Since jsbn is pure JavaScript, its performance will depend on the hardware as well as the quality of the JavaScript execution environment.

The following table shows the times taken for various public-key operations on a cross-section of browsers and hardware.

Operation Chrome (PC) Firefox (PC) IE (PC) Mobile
RSA public, 512 bit, e=3 0ms 1ms 4ms 40ms
RSA public, 512 bit, e=F4 1ms 6ms 20ms 140ms
RSA public, 1024 bit, e=3 1ms 3ms 10ms 90ms
RSA public, 1024 bit, e=F4 2ms 15ms 70ms 180ms
RSA private, 512 bit 5ms 75ms 190ms 270ms
RSA private, 1024 bit 30ms 300ms 1250ms(*) 650ms
EC multiply, 128 bit 25ms 200ms 500ms 400ms
EC multiply, 160 bit 30ms 450ms 820ms 600ms
EC multiply, 192 bit 35ms 750ms 1250ms 720ms
EC multiply, 224 bit 50ms 900ms 2500ms(*) 900ms
EC multiply, 256 bit 65ms 1300ms 3100ms(*) 1300ms
BB1 encrypt, 192 bit (IETF) 80ms 800ms 2900ms(*) 1200ms
BB1 encrypt, 512 bit ("1024") 300ms 4500ms 15000ms 4600ms

EC multiply = Elliptic curve point multiplication, bit size denotes both curve prime size and scalar multiplier size.

PC = Win7 64-bit, Intel Core i5 M520 (2.4GHz)
Mobile = Android 2.2 "Froyo" on Samsung Epic 4G

Browsers used:
Google Chrome version 10.0.648.151
Mozilla Firefox version 3.6.15
Microsoft Internet Explorer version 8.0.7601.17514

(*) Slow script dialog triggered