John the Ripper benchmarks

Initially, this page will be the place to collect and share trivial john –test benchmarks on different systems. At a later time, it may make sense to turn it into a namespace with sub-pages for john –test benchmarks (only c/s rate matters) and actual cracking runs (lots of things matter). Also, the underlying data may be uploaded/collected (e.g., exact john –test outputs, /proc/cpuinfo off of Linux systems, john.log files).

Collected "john --test" benchmarks

Please add your benchmark results to the table. Please make sure to run the benchmarks on an otherwise idle system (the real vs. virtual time results should be almost the same, so it should not matter which of these two you pick).

For multi-CPU systems and multi-core CPUs, the c/s rates given are for one CPU core. For example, the Q6700 CPU achieves an equivalent of just over 2.5 million of traditional DES-based crypt(3) checks per second per core, but since this CPU is quad-core, this translates to just over 10 million of checks per second per CPU chip, with proper parallelization.

For some CPUs (such as Core i7), the per-core clock rate varies with the number of cores in use, so directly multiplying the per-core c/s rate by the number of cores would not yield the CPU's combined c/s rate capability (the actual combined c/s rate would be less), but on the other hand if the CPU also supports SMT (Hyperthreading) then additional speedup may be obtained by running more JtR processes than the CPU's number of cores.

Please keep this table sorted by performance at DES-based crypt() for “many salts”, better results listed first, best results for each hash type shown in bold, best results for CPUs operating at their rated frequencies (non-overclocked) and running non-modified JtR code shown in bold-italics.

DES crypt()
many / one salt
MD5 crypt() bcrypt x32 Windows LanMan CPU & clock rate JtR OS compiler make target tweaks
3486K / 2989K
128/128 BS SSE2-16
15580
32/64 X2
943
32/64 X2
17754K
128/128 BS SSE2-16
E6750
o/c to 3.6 GHz
1.7.3.1 Linux gcc 4.2.3
4.2.3-2ubuntu7
linux-x86-64
3017K / 2588K
128/128 BS SSE2-16
13644
32/64 X2
825
32/64 X2
14938K
128/128 BS SSE2-16
X5460
3.16 GHz
1.7.4.2 Linux gcc 4.4.3 linux-x86-64
3013K / 2531K
128/128 BS SSE2-16
11257
32/64 X2
745
32/64 X2
16649K
128/128 BS SSE2-16
X5460
3.16 GHz
1.7.3.1-owl1
package
Linux gcc 3.4.5 linux-x86-64
2739K / 2410K
128/128 BS SSE2-16
12143
32/64 X2
758
32/64 X2
14621K
128/128 BS SSE2-16
Core i7 920 2.66 GHz
boost to 3.?? GHz
1.7.3.1 Linux gcc 4.3.3
4.3.2-2ubuntu6
linux-x86-64
2711K / 2250K
128/128 BS SSE2-16
31932
12x
696
32/64 X2
12454K
128/128 BS SSE2-16
Q9550
2.83GHz
1.7.3.1 Linux icc 10.1 linux-x86-64-icc icc patch
2545K / 2221K
128/128 BS SSE2-16
11840
32/64 X2
695
32/64 X2
17326K
128/128 BS SSE2-16
Core i7 920 2.66 GHz
boost to 3.?? GHz
1.7.4.2 Linux gcc 4.4.3 linux-x86-64
2537K / 2200K
128/128 BS SSE2-16
11200
32/64 X2
537
32/64 X2
13306K
128/128 BS SSE2-16
Q6700
2.66 GHz
1.7.3.1 Linux gcc 4.1.2
Red Hat 4.1.2-14
linux-x86-64
2525K / 2161K
128/128 BS SSE2-16
8098
32/32
496
32/32
13073K
128/128 BS SSE2-16
E8400
3.0 Ghz
1.7.2 Windows XP gcc ? win32-cygwin-x86-sse2
2375K / 1911K
128/128 BS SSE2-16
10432
32/64 X2
628
32/64 X2
12988K
128/128 BS SSE2-16
Q6600
2.4 GHz
1.7.3.1-all-5 Linux gcc 4.3.3
4.3.3-5ubuntu4
linux-x86-64
2300K / 1940K
128/128 BS SSE2-16
8600
32/64 X2
568
32/64 X2
12851K
128/128 BS SSE2-16
Q6600
2.4 GHz
1.7.3.1 Linux gcc 3.4.5 linux-x86-64
2273K / 2182K
128/128 BS SSE2-16
10191
32/64 X2
615
32/64 X2
13001K
128/128 BS SSE2-16
P8600
2.4 GHz
1.7.3.1 Mac OS X 10.5 gcc 4.2.1 macosx-x86-64 -fast -march=core2
2271K / 1929K
128/128 BS SSE2
7300
32/32
450
32/32
12530K
128/128 BS SSE2
Q6700
2.66 GHz
1.7.3.1 Linux gcc 4.1.2
Red Hat 4.1.2-14
linux-x86-64-32-sse2
(non-optimal)
2229K / 1914K
128/128 BS SSE2-16
10034
32/64 X2
603
32/64 X2
11407K
128/128 BS SSE2-16
E5410
2.33 GHz
1.7.3.1 Linux gcc 4.2.3
Ubuntu 4.2.3
linux-x86-64
2222K / 1880K
128/128 BS SSE2-16
8277
32/64 X2
550
32/64 X2
12458K
128/128 BS SSE2-16
E5410
2.33 GHz
1.7.3.1 Linux gcc 3.4.5 linux-x86-64
2095K / 1789K
128/128 BS SSE2
6842
32/32
420
32/32
11831K
128/128 BS SSE2
E7200
2.5 GHz
1.7.3.4 XP gcc 3.4.5 mingw special r3 win32-mingw-x86-sse2
1902K / 1590K
128/128 BS SSE2-16
8140
32/64 X2
464
32/64 X2
8580K
128/128 BS SSE2-16
Core 2 Duo
2.0 GHz
1.7.3.1 Mac OS X 10.5 gcc (Xcode 3.0) macosx-x86-64
1888K / 1601K
128/128 BS SSE2-16
7080
32/64 X2
468
32/64 X2
10640K
128/128 BS SSE2-16
E5405
2.0 GHz
1.7.3.1 Linux gcc 3.4.5 linux-x86-64
1883K / 1630K
128/128 BS SSE2-16
11723
32/64 X2
747
32/64 X2
10509K
128/128 BS SSE2-16
Phenom 9950
2.6 GHz
1.7.3.1 Linux gcc 4.3.1 linux-x86-64
1790K / 1535K
128/128 BS SSE2
5882
32/32
360
32/32
8534K
128/128 BS SSE2
Xeon 3050
2.13 GHz
1.7.3.1 Linux gcc 4.3.2
Debian 4.3.2-1.1
linux-x86-sse2
1705K / 1439K
128/128 BS SSE2-16
6413
32/64 X2
424
32/64 X2
9454K
128/128 BS SSE2-16
Core 2 Duo T7100
1.8 GHz
1.7.3.1-owl1
package
Linux gcc 3.4.5 linux-x86-64
1695K / 1398K
128/128 BS SSE2
5520
32/32
336
32/32
7814K
128/128 BS SSE2
Core 2 Duo
2.0 GHz
1.7.3.1 Mac OS X 10.5 gcc (Xcode 3.0) macosx-x86-sse2
1688K / 1465K
128/128 BS SSE2-16
9852
32/64 X2
652
32/64 X2
10582K
128/128 BS SSE2-16
Opteron 2356
2.3 GHz
1.7.3.1 Solaris 10 Sun Studio 12 solaris-x86-64-cc
1684K / 1449K
128/128 BS SSE2-16
10431
32/64 X2
664
32/64 X2
9480K
128/128 BS SSE2-16
Opteron 1356
2.3 GHz
1.7.3.1 Linux gcc 4.3.0
Red Hat 4.3.0-8
linux-x86-64
1676K / 1461K
128/128 BS SSE2-16
10299
32/64 X2
632
32/64 X2
9226K
128/128 BS SSE2-16
Opteron 1356
2.3 GHz
1.7.3.1 FreeBSD gcc 4.2.1 freebsd-x86-64
1604K / 1379K
128/128 BS SSE2-16
9903
32/64 X2
628
32/64 X2
9100K
128/128 BS SSE2-16
Opteron 2354
2.2 GHz
1.7.3.1 Linux 4.3.3-5ubuntu4
Ubuntu 9.04
linux-x86-64
1535K / 1325K
128/128 BS SSE2-16
9473
32/64 X2
600
32/64 X2
8720K
128/128 BS SSE2-16
Opteron 2352
2.1 GHz
1.7.3.1 Linux gcc 4.3.2
Debian 4.3.2-1.1
linux-x86-64
1339K / 1178K
128/128 BS SSE2-16
8422
32/32
505
32/32
8799K
128/128 BS SSE2-16
Athlon 64 X2 5600+
2.8 GHz
1.7.2 FreeBSD 7.2Rp1 gcc 4.2.1 freebsd-x86-sse2
1337K / 1181K
SSE intrinsics
22769
12x
524
32×64 X2
9843K
SSE intrinsics
E5405
2.00 GHz
1.7.3.1 Vista 64 ICC 11.0.066 VS native custom version
1307K / 1177K
128/128 BS SSE2-16
11821
32/64 X2
755
32/64 X2
10147K
128/128 BS SSE2-16
Opteron 8220
2.8 GHz
1.7.3.1 Solaris 10 Sun Studio 12 solaris-x86-64-cc
1215K / 1091K
128/128 BS SSE2-16
11020
32/64 X2
700
32/64 X2
9426K
128/128 BS SSE2-16
Opteron 2218
2.6 GHz
1.7.3.1 Solaris 10 Sun Studio 12 solaris-x86-64-cc
1211K / 1105K
128/128 BS SSE2-16
9692
32/64 X2
683
32/64 X2
9240K
128/128 BS SSE2-16
Opteron 2218
2.6 GHz
1.7.3.1 Solaris 10 gcc 3.4.3 solaris-x86-64-gcc
1182K / 1045K
128/128 BS SSE2-16
7473
32/32
409
32/32
7816K
128/128 BS SSE2-16
Athlon DC 4850e
2.5 GHz
1.7.2 FreeBSD 7.0Rp11 gcc 4.2.1 freebsd-x86-sse2
1175K / 1066K
128/128 BS SSE2-16
11239
32/64 X2
709
32/64 X2
8449K
128/128 BS SSE2-16
Athlon 64 X2 4800+
2.5 GHz
1.7.3.1 FreeBSD 7.0Rp3 gcc 4.2.1 freebsd-x86-64
1136K/1055K
64/64 BS MMX
7300
32/32
450
32/32
9710K
64/64 BS MMX
Q6700
2.66 GHz
1.7.3.1 Linux gcc 4.1.2
Red Hat 4.1.2-14
linux-x86-64-32-mmx
(non-optimal)
1058K/970K
128/128 BS SSE2-16
12759
32/64 X2
881
32/64 X2
9048K
128/128 BS SSE2-16
P4 Xeon Nocona
3.6 GHz
1.7.3.1 Linux 4.3.3-5ubuntu4
Ubuntu 9.04
linux-x86-64
1021K/873K
128/128 BS SSE2
5160
12x
202
32/32
5237K
128/128 BS SSE2
U7600
1.2 GHz
1.7.3.1-all-5 Linux icc 11.0 linux-x86-sse2-icc icc patch
940K / 853K
128/128 BS SSE2-16
7477
32/64 X2
331
32/64
7113K
128/128 BS SSE2-16
Athlon 64 3000+
2.0 GHz
1.7.2 Linux gcc 3.4.5 linux-x86-64
937K / 847K
128/128 BS SSE2-16
8971
32/64 X2
579
32/64 X2
6609K
128/128 BS SSE2-16
Athlon 64 3000+
2.0 GHz
1.7.3.1 Linux gcc 4.3.1 linux-x86-64
796K / 757K
64/64 BS
11200
32/64 X2
537
32/64 X2
10230K
64/64 BS
Q6700
2.66 GHz
1.7.3.1 Linux gcc 4.1.2
Red Hat 4.1.2-14
generic
(non-optimal)
731K / 650K
128/128 BS SSE2
4471
32/32
352
32/32
5436K
128/128 BS SSE2
P4 Northwood
2.4 GHz
1.7.3.1 Windows XP gcc 3.4.4 win32-cygwin-x86-sse2
709K / 644K
128/128 BS AltiVec
3916
32/32 X2
270
32/32
4857K
128/128 BS AltiVec
PowerPC G4
1.5 GHz
1.7.3.1-all-5 Mac OS X 10.4 gcc 4.0.1 macosx-ppc32-altivec
626K / 505K
128/128 BS AltiVec
3415
32/32 X2
236
32/32
4217K
128/128 BS AltiVec
PowerPC 7450
1.3 GHz
1.7.2 Mac OS X 10.5 gcc (Xcode 3.0) macosx-ppc32-altivec
435K / 370K
64/64 BS
1484
32/64 X2
98.3
32/64
4417K
64/64 BS
Alpha 21264A
667 MHz
1.6.17 Linux egcs 1.1.2 linux-alpha -mev6
333K / 300K
24/32 4K
7698
32/32
466
32/32
3966K
32/32 BS
Opteron
2.6 GHz
1.7.2 Solaris 10 gcc 3.4.3 solaris-x86-any
(non-optimal)
328K / 300K
64/64 BS MMX
2460
32/32
171
32/32
2683K
64/64 BS MMX
Pentium 3
1.0 GHz
1.7.2 Linux gcc 3.4.5 linux-x86-mmx
260K / 217K
64/64 BS
1227
32/64 X2
105
32/64
1734K
64/64 BS
UltraSPARC-T2
1167 MHz
1.7.3.1 Solaris 10 Sun Studio 11 solaris-sparc64-cc
216K / 173K
64/64 BS
1123
32/64 X2
84.7
32/64
1110K
64/64 BS
Alpha 21164PC
533 MHz
1.7.3.1 Linux gcc 2.95.3 linux-alpha
213K / 183K
64/64 BS
1192
32/64 X2
100
32/64
1719K
64/64 BS
UltraSPARC-T2
1167 MHz
1.7.3.1 Solaris 10 SSX0903 solaris-sparc64-cc -xchip=ultraT2
198K / 170K
64/64 BS
788
32/64 X2
57
32/64
1236K
64/64 BS
UltraSPARC IIs
Blackbird 400 MHz
1.7.3.1 Solaris 10 Sun Studio 12.1 solaris-sparc64-cc
155K / 137K
64/64 BS
1128
32/64 X2
90
32/64
1348K
64/64 BS
UltraSPARC-T2
1167 MHz
1.7.3.1 Solaris 10 gcc 3.4.3 solaris-sparc64-gcc -mcpu=ultrasparc3
139K / 119K
64/64 BS
507
32/64 X2
80.3
32/64
1002K
64/64 BS
Alpha 21164PC
533 MHz
1.7.3.1 Linux gcc 3.4.5 linux-alpha
122K / 107K
64/64 BS
1016
32/64 X2
70.6
32/64
1036K
64/64 BS
Alpha 21164PC
533 MHz
1.7.3.1 Linux Compaq C
V6.2-002
linux-alpha-ccc
108K / 97K
64/64 BS
675
32/64 X2
58.1
32/64
765K
64/64 BS
UltraSPARC IIi
333 MHz
1.7.3.1 NetBSD gcc 3.3.3
nb3 20040520
netbsd-sparc64
107K / 97K
64/64 BS MMX
868
32/32
60.0
32/32
945K
64/64 BS MMX
Pentium II
350 MHz
1.7.3.1 Linux gcc 2.7.2.3 linux-x86-mmx
66K / 63K
32/32 BS
804
32/32 X2
76.8
32/32
876K
32/32 BS
UltraSPARC IIi
400 MHz
1.7-owl2
package
Linux gcc 3.4.5 linux-sparc
(32-bit userland)
CFLAGS
61K / 56K
32/32 BS
706
32/32 X2
56.2
32/32
696K
32/32 BS
UltraSPARC IIi
400 MHz
1.7.3.1 Linux gcc 3.4.5 linux-sparc
(32-bit userland)
59K / 56K
32/32 BS
500
32/32 X2
39.5
32/32
712K
32/32 BS
UltraSPARC IIs
Blackbird 400 MHz
1.7.3.1 Linux gcc 4.3.2
debian 5.0.2
linux-sparc
45K / 43K
32/32 BS
740
32/32
53.5
32/32
600K
32/32 BS
Pentium II
350 MHz
1.7.3.1 Linux gcc 2.7.2.3 generic
(non-optimal)
39K / 36K
24/32 4K
868
32/32
60.0
32/32
600K
32/32 BS
Pentium II
350 MHz
1.7.3.1 Linux gcc 2.7.2.3 linux-x86-any
(non-optimal)
13K / 12K
32/32x8V BS
119
32/32 X2
13.8
32/32
138K
32/32x8V BS
PA-RISC 7100LC
80 MHz
1.7.3.1 HP-UX 10.20 gcc 2.95.2 hpux-pa-risc-gcc
1679 / 1632
32/32 BS
74
32/32
4.0
32/32
33.4K
32/32 BS
PP5021C (x2)
80 MHz
1.7.2 Linux-iPod2
(1st Gen. iPod Nano)
gcc 3.4.3 linux-arm
(custom target)
992 / 972
32/32 BS
35
32/32
2.0
32/32
19K
32/32 BS
PP5002 (x2)
90 MHz
1.7.2 Linux-iPod2
(3G iPod)
gcc 3.4.3 linux-arm
(custom target)

What (not) to submit

Please note that for 32-bit x86 targets (those with x86-any, x86-mmx, and x86-sse2 in their names), the C compiler and its version are largely irrelevant, because almost all of the performance-critical code is written in assembly language anyway. The above table specifies the compiler and version in all cases, but for these targets there's no need to submit multiple almost identical results that differ only in compiler choice and/or version.

For x86-64 targets there should be almost no performance difference across compilers/versions for DES-based crypt(3) hashes, for the same reason. However, other hash types may actually be affected by C compiler and its version, so multiple entries may be submitted.

Windows LanMan hashes are so very fast that their performance is significantly affected by various types of overhead, and you should not be surprised if performance changes by as much as 10% or even more between JtR builds and even between invocations (e.g., because of different code placement in caches), even though JtR tries to mitigate this effect to some extent. Thus, benchmarks that differ from existing ones for the same CPU and clock rate only at LanMan hashes are generally of little value, unless the difference is well over 10% and/or it is for a specific (known) reason (such as a relevant code change between JtR versions).

With few exceptions, the operating system should not significantly affect JtR performance, however it affects what JtR versions and make targets you may use and what compilers and versions are available. Hence, it makes sense to list it and also to include benchmarks on the same hardware, but with different operating systems (and thus with different make targets). Luckily, there are not as many different operating systems as there are different gcc versions. Multiple benchmarks for different versions of the same operating system flavor, with everything else staying the same as well, should not be listed. If desired, for clarity, listings with obsolete operating system versions may be replaced with those for currently maintained ones.

That said, if in doubt whether your benchmark results are of value, please do submit them, and please do not be offended if they are moved to another table or sub-page meant to hold likely insignificant results (yet to be created, if the need arises).

If you feel that a benchmark result is insignificant (given the criteria above) or incorrect, please move it into another table (create one) and indicate the reason for your decision in the “edit summary” for your change to this wiki page.

Thank you!

Back to John the Ripper user community resources.

 
john/benchmarks.txt · Last modified: 2010/02/24 03:57 by solar
 
Recent changes RSS feed Creative Commons License Donate to DokuWiki Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Powered by OpenVZ Powered by Openwall GNU/*/Linux