Skip to content

Instantly share code, notes, and snippets.

@catap
Created November 20, 2020 22:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save catap/0fb1428f84cc5a26ab45fa37542f9526 to your computer and use it in GitHub Desktop.
Save catap/0fb1428f84cc5a26ab45fa37542f9526 to your computer and use it in GitHub Desktop.
`openssl speed` on Macmini9,1 with `Apple M1` and Macmini8,1 with `Intel® Core™ i7-8700B`
LibreSSL 2.8.3
built on: date not available
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: information not available
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 0.00 0.00 0.00 0.00 0.00
md4 104247.41k 302673.38k 640475.47k 896989.80k 1020123.39k
md5 78389.66k 235437.10k 523467.57k 759192.69k 869210.24k
hmac(md5) 77018.96k 227375.22k 515807.50k 750403.53k 859425.89k
sha1 98766.01k 281813.37k 599611.21k 846761.41k 1001254.91k
rmd160 70346.93k 177716.97k 345561.21k 444236.20k 480022.07k
rc4 859553.01k 904144.89k 742283.55k 697717.04k 680740.97k
des cbc 102531.02k 105835.44k 107961.59k 105141.10k 105381.21k
des ede3 39484.42k 39700.82k 39911.89k 39533.87k 39628.69k
idea cbc 0.00 0.00 0.00 0.00 0.00
seed cbc 0.00 0.00 0.00 0.00 0.00
rc2 cbc 62057.75k 62702.05k 62382.91k 62486.03k 62460.55k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 150238.54k 156449.08k 158259.42k 159588.98k 158477.10k
cast cbc 154009.90k 163335.33k 166940.94k 168828.68k 168547.85k
aes-128 cbc 176020.36k 195035.17k 200476.02k 201752.36k 202015.44k
aes-192 cbc 150267.48k 163560.06k 168264.76k 168642.13k 167867.76k
aes-256 cbc 130781.27k 140077.50k 141627.87k 144095.20k 143932.82k
camellia-128 cbc 144997.84k 223371.56k 253474.73k 259046.87k 264010.99k
camellia-192 cbc 127082.88k 173284.98k 190220.32k 194400.20k 197339.89k
camellia-256 cbc 126897.83k 171699.29k 190457.80k 194682.27k 194919.16k
sha256 83160.91k 174381.72k 296755.25k 353533.76k 378970.45k
sha512 66257.86k 261585.57k 381387.93k 515263.12k 581127.13k
whirlpool 40455.56k 84869.09k 140690.03k 165904.06k 176176.83k
aes-128 ige 180845.02k 186809.04k 187713.19k 186224.55k 186269.11k
aes-192 ige 152762.24k 155001.64k 156494.39k 156844.21k 157024.38k
aes-256 ige 131281.66k 133868.67k 136709.97k 133605.08k 135346.95k
ghash 1918886.69k 4096182.21k 4482658.11k 4614595.45k 4581623.60k
aes-128 gcm 249900.58k 814399.03k 1818783.23k 2439422.00k 2763436.74k
aes-256 gcm 223104.57k 741490.62k 1622133.14k 2147113.16k 2354751.96k
chacha20 poly1305 42827.60k 166121.56k 309637.99k 388600.33k 421576.49k
sign verify sign/s verify/s
rsa 512 bits 0.000038s 0.000005s 26005.3 194412.4
rsa 1024 bits 0.000133s 0.000013s 7502.2 79221.3
rsa 2048 bits 0.000784s 0.000044s 1276.0 22834.1
rsa 4096 bits 0.005957s 0.000159s 167.9 6274.0
sign verify sign/s verify/s
dsa 512 bits 0.000055s 0.000044s 18261.6 22831.5
dsa 1024 bits 0.000101s 0.000095s 9903.1 10578.9
dsa 2048 bits 0.000274s 0.000284s 3646.4 3515.6
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0002s 0.0002s 4257.7 5716.0
192 bit ecdsa (nistp192) 0.0003s 0.0002s 3633.8 4758.8
224 bit ecdsa (nistp224) 0.0004s 0.0003s 2634.2 3659.6
256 bit ecdsa (nistp256) 0.0004s 0.0003s 2326.7 3265.7
384 bit ecdsa (nistp384) 0.0009s 0.0006s 1100.2 1661.9
521 bit ecdsa (nistp521) 0.0020s 0.0012s 489.6 830.6
163 bit ecdsa (nistk163) 0.0011s 0.0007s 917.6 1341.3
233 bit ecdsa (nistk233) 0.0023s 0.0015s 439.6 656.9
283 bit ecdsa (nistk283) 0.0035s 0.0024s 285.2 419.6
409 bit ecdsa (nistk409) 0.0081s 0.0055s 122.8 181.9
571 bit ecdsa (nistk571) 0.0175s 0.0119s 57.0 84.3
163 bit ecdsa (nistb163) 0.0011s 0.0007s 922.9 1360.8
233 bit ecdsa (nistb233) 0.0023s 0.0015s 443.6 646.8
283 bit ecdsa (nistb283) 0.0035s 0.0024s 288.8 411.9
409 bit ecdsa (nistb409) 0.0081s 0.0054s 123.2 185.0
571 bit ecdsa (nistb571) 0.0176s 0.0117s 57.0 85.2
op op/s
160 bit ecdh (secp160r1) 0.0002s 5046.0
192 bit ecdh (nistp192) 0.0002s 4262.7
224 bit ecdh (nistp224) 0.0003s 3032.5
256 bit ecdh (nistp256) 0.0004s 2687.9
384 bit ecdh (nistp384) 0.0008s 1215.3
521 bit ecdh (nistp521) 0.0019s 527.0
163 bit ecdh (nistk163) 0.0010s 957.3
233 bit ecdh (nistk233) 0.0022s 454.5
283 bit ecdh (nistk283) 0.0034s 295.2
409 bit ecdh (nistk409) 0.0080s 125.5
571 bit ecdh (nistk571) 0.0175s 57.3
163 bit ecdh (nistb163) 0.0010s 957.4
233 bit ecdh (nistb233) 0.0022s 455.1
283 bit ecdh (nistb283) 0.0034s 294.2
409 bit ecdh (nistb409) 0.0080s 125.1
571 bit ecdh (nistb571) 0.0174s 57.6
LibreSSL 2.8.3
built on: date not available
options:bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: information not available
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 0.00 0.00 0.00 0.00 0.00
md4 150320.65k 368478.71k 654043.27k 809927.79k 870688.20k
md5 94554.80k 226353.75k 406166.21k 505938.92k 545038.64k
hmac(md5) 65849.80k 183615.90k 367078.25k 489647.57k 542018.35k
sha1 116491.52k 281470.01k 506654.08k 633651.16k 683020.27k
rmd160 58672.97k 128483.37k 214638.92k 257828.11k 273915.08k
rc4 1060571.85k 1272129.70k 1339922.87k 1354641.95k 1362911.39k
des cbc 80618.28k 81990.14k 82335.64k 82431.72k 82464.89k
des ede3 30556.50k 30760.18k 30816.04k 30829.90k 30832.56k
idea cbc 0.00 0.00 0.00 0.00 0.00
seed cbc 0.00 0.00 0.00 0.00 0.00
rc2 cbc 60625.17k 61536.76k 61694.90k 61732.89k 61746.36k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 134798.99k 139634.09k 140877.32k 141190.27k 141275.27k
cast cbc 118045.78k 121651.07k 122539.48k 122639.45k 122569.98k
aes-128 cbc 304983.98k 315008.92k 318037.21k 315366.65k 320713.95k
aes-192 cbc 262659.84k 270380.28k 272174.42k 270789.45k 272421.42k
aes-256 cbc 233591.15k 237238.18k 234695.81k 240151.09k 241576.81k
camellia-128 cbc 167950.91k 177031.34k 177316.11k 179476.21k 180338.56k
camellia-192 cbc 129350.13k 133254.31k 134031.49k 135361.70k 135159.15k
camellia-256 cbc 129157.83k 133883.34k 135008.44k 135472.52k 135317.67k
sha256 82403.98k 170471.52k 276185.92k 326843.85k 345181.76k
sha512 67252.73k 266905.19k 372269.14k 496280.43k 554394.02k
whirlpool 48571.91k 101650.53k 165790.63k 198249.23k 210449.52k
aes-128 ige 297835.88k 298111.53k 300879.49k 299856.88k 301588.67k
aes-192 ige 258534.19k 262591.91k 260125.04k 258805.11k 264663.36k
aes-256 ige 227424.79k 229206.81k 225177.34k 228615.31k 229640.04k
ghash 290491.05k 293717.36k 294490.62k 294702.94k 294759.80k
aes-128 gcm 73750.09k 128875.91k 154096.82k 163387.69k 166622.50k
aes-256 gcm 64239.53k 110576.87k 132009.37k 139417.01k 141043.78k
chacha20 poly1305 42952.27k 165017.64k 283696.69k 342546.60k 366897.85k
sign verify sign/s verify/s
rsa 512 bits 0.000062s 0.000008s 16213.6 133025.2
rsa 1024 bits 0.000285s 0.000023s 3509.5 42809.4
rsa 2048 bits 0.001714s 0.000077s 583.3 12921.2
rsa 4096 bits 0.011065s 0.000274s 90.4 3646.6
sign verify sign/s verify/s
dsa 512 bits 0.000063s 0.000061s 15752.2 16391.1
dsa 1024 bits 0.000158s 0.000164s 6343.4 6092.2
dsa 2048 bits 0.000490s 0.000535s 2039.2 1870.5
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0003s 0.0002s 3107.4 4686.6
192 bit ecdsa (nistp192) 0.0003s 0.0002s 3037.3 4577.7
224 bit ecdsa (nistp224) 0.0004s 0.0003s 2248.8 3415.1
256 bit ecdsa (nistp256) 0.0005s 0.0003s 2031.4 3162.1
384 bit ecdsa (nistp384) 0.0010s 0.0006s 975.1 1606.5
521 bit ecdsa (nistp521) 0.0020s 0.0011s 504.5 898.4
163 bit ecdsa (nistk163) 0.0012s 0.0008s 837.6 1253.5
233 bit ecdsa (nistk233) 0.0022s 0.0016s 444.7 641.2
283 bit ecdsa (nistk283) 0.0035s 0.0023s 287.1 426.1
409 bit ecdsa (nistk409) 0.0080s 0.0054s 124.9 186.2
571 bit ecdsa (nistk571) 0.0178s 0.0118s 56.3 84.5
163 bit ecdsa (nistb163) 0.0012s 0.0008s 835.5 1255.9
233 bit ecdsa (nistb233) 0.0023s 0.0015s 444.1 660.0
283 bit ecdsa (nistb283) 0.0035s 0.0024s 287.0 420.6
409 bit ecdsa (nistb409) 0.0080s 0.0054s 124.5 185.9
571 bit ecdsa (nistb571) 0.0178s 0.0119s 56.3 84.0
op op/s
160 bit ecdh (secp160r1) 0.0003s 3312.6
192 bit ecdh (nistp192) 0.0003s 3293.3
224 bit ecdh (nistp224) 0.0004s 2418.9
256 bit ecdh (nistp256) 0.0005s 2181.6
384 bit ecdh (nistp384) 0.0010s 1027.3
521 bit ecdh (nistp521) 0.0019s 524.0
163 bit ecdh (nistk163) 0.0012s 869.5
233 bit ecdh (nistk233) 0.0022s 453.2
283 bit ecdh (nistk283) 0.0034s 291.2
409 bit ecdh (nistk409) 0.0080s 125.7
571 bit ecdh (nistk571) 0.0177s 56.5
163 bit ecdh (nistb163) 0.0012s 867.3
233 bit ecdh (nistb233) 0.0022s 452.6
283 bit ecdh (nistb283) 0.0034s 291.2
409 bit ecdh (nistb409) 0.0080s 125.7
571 bit ecdh (nistb571) 0.0177s 56.6
@cacamille3
Copy link

Hi, I have quite the same result on mine.
GCM is really slow on M1... On Intel GCM is slower for 16 and 64 bytes but then better for 256 bytes and bigger (i.e:13x for 8k with 128)
On M1 GCM is always a lot slower (/2) compare to CBC...

@catap
Copy link
Author

catap commented Jan 10, 2022

@cacamille3 this was made when one of the first M1 machine was avaialable.

I hope that M1 pro has much better perofrmance :)

@cacamille3
Copy link

cacamille3 commented Jan 10, 2022

@catap I have found this on Twitter

@neunon - 17.12.2020 - This is bizarre. macOS 11.1 provides LibreSSL 2.8.3 in the base install, and AES is 4x-11x faster under Rosetta 2 x86_64 emulation than with the native ARM64 binary. On an M1, just try "openssl speed aes-128-gcm" and compare running it with "arch -x86_64" and "arch -arm64e".

I will test it later at home.

link: https://twitter.com/neunon/status/1339452324121481218

@catap
Copy link
Author

catap commented Jan 10, 2022

@cacamille3 old twit :) it explains everything.

@cacamille3
Copy link

cam@Camilles-Air ~ % arch -arm64e openssl speed aes-128-gcm
Doing aes-128 gcm for 3s on 16 size blocks: 13568992 aes-128 gcm's in 2.99s
Doing aes-128 gcm for 3s on 64 size blocks: 5996881 aes-128 gcm's in 2.98s
Doing aes-128 gcm for 3s on 256 size blocks: 1804847 aes-128 gcm's in 2.99s
Doing aes-128 gcm for 3s on 1024 size blocks: 477158 aes-128 gcm's in 2.98s
Doing aes-128 gcm for 3s on 8192 size blocks: 60830 aes-128 gcm's in 2.99s
LibreSSL 2.8.3
built on: date not available
options:bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) aes(partial) blowfish(idx) 
compiler: information not available
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 gcm      72548.63k   128666.30k   154570.84k   163982.39k   166845.75k
cam@Camilles-Air ~ % arch -x86_64 openssl speed aes-128-gcm
Doing aes-128 gcm for 3s on 16 size blocks: 29090786 aes-128 gcm's in 3.00s
Doing aes-128 gcm for 3s on 64 size blocks: 23614420 aes-128 gcm's in 2.98s
Doing aes-128 gcm for 3s on 256 size blocks: 13789605 aes-128 gcm's in 2.98s
Doing aes-128 gcm for 3s on 1024 size blocks: 4680504 aes-128 gcm's in 2.98s
Doing aes-128 gcm for 3s on 8192 size blocks: 649968 aes-128 gcm's in 2.99s
LibreSSL 2.8.3
built on: date not available
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx) 
compiler: information not available
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 gcm     155285.54k   506744.32k  1184633.82k  1606938.70k  1777948.47k

Rosetta perform 2x-10x better than native !

@catap
Copy link
Author

catap commented Jan 10, 2022

@cacamille3 this dives me crazy! Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment