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).
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) |
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!