Here are some other interesting results. This is comparison of
a) wolfssl vs openssl library
b) gcc 4.6.4 vs gcc 7.5.0
All tests were run on ARAnyM this time.The benchmark i used is that of wolfsll, and ported to openssl.
Results for gcc 4.6.4:
Code: Select all
------------------------------------------------------------------------------
wolfSSL version 5.5.0
------------------------------------------------------------------------------
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
RNG 35 MB took 1.040 seconds, 33.654 MB/s
AES-128-CBC-enc 60 MB took 1.060 seconds, 56.604 MB/s
AES-128-CBC-dec 50 MB took 1.080 seconds, 46.296 MB/s
AES-192-CBC-enc 50 MB took 1.010 seconds, 49.505 MB/s
AES-192-CBC-dec 45 MB took 1.090 seconds, 41.284 MB/s
AES-256-CBC-enc 50 MB took 1.110 seconds, 45.045 MB/s
AES-256-CBC-dec 40 MB took 1.050 seconds, 38.095 MB/s
AES-128-GCM-enc 10 MB took 1.910 seconds, 5.236 MB/s
AES-128-GCM-dec 10 MB took 1.920 seconds, 5.208 MB/s
AES-192-GCM-enc 10 MB took 1.940 seconds, 5.155 MB/s
AES-192-GCM-dec 10 MB took 1.930 seconds, 5.181 MB/s
AES-256-GCM-enc 10 MB took 1.940 seconds, 5.155 MB/s
AES-256-GCM-dec 10 MB took 1.930 seconds, 5.181 MB/s
GMAC Default 6 MB took 1.040 seconds, 5.769 MB/s
AES-128-ECB-enc 14 MB took 1.000 seconds, 13.641 MB/s
AES-128-ECB-dec 14 MB took 1.000 seconds, 13.607 MB/s
AES-192-ECB-enc 13 MB took 1.000 seconds, 13.190 MB/s
AES-192-ECB-dec 13 MB took 1.000 seconds, 13.100 MB/s
AES-256-ECB-enc 13 MB took 1.000 seconds, 12.843 MB/s
AES-256-ECB-dec 13 MB took 1.000 seconds, 12.736 MB/s
CHACHA 160 MB took 1.010 seconds, 158.418 MB/s
CHA-POLY 20 MB took 1.230 seconds, 16.260 MB/s
3DES 20 MB took 1.250 seconds, 16.000 MB/s
MD5 335 MB took 1.010 seconds, 331.683 MB/s
POLY1305 20 MB took 1.100 seconds, 18.182 MB/s
SHA 280 MB took 1.010 seconds, 277.228 MB/s
SHA-224 105 MB took 1.040 seconds, 100.962 MB/s
SHA-256 105 MB took 1.020 seconds, 102.941 MB/s
SHA-384 15 MB took 1.400 seconds, 10.714 MB/s
SHA-512 15 MB took 1.420 seconds, 10.563 MB/s
SHA3-224 30 MB took 1.160 seconds, 25.862 MB/s
SHA3-256 25 MB took 1.040 seconds, 24.038 MB/s
SHA3-384 20 MB took 1.060 seconds, 18.868 MB/s
SHA3-512 15 MB took 1.140 seconds, 13.158 MB/s
RIPEMD 175 MB took 1.020 seconds, 171.569 MB/s
HMAC-MD5 330 MB took 1.010 seconds, 326.733 MB/s
HMAC-SHA 270 MB took 1.010 seconds, 267.327 MB/s
HMAC-SHA224 105 MB took 1.020 seconds, 102.941 MB/s
HMAC-SHA256 105 MB took 1.010 seconds, 103.960 MB/s
HMAC-SHA384 15 MB took 1.390 seconds, 10.791 MB/s
HMAC-SHA512 15 MB took 1.420 seconds, 10.563 MB/s
PBKDF2 10 KB took 1.000 seconds, 10.281 KB/s
RSA 2048 public 200 ops took 1.300 sec, avg 6.500 ms, 153.846 ops/sec
RSA 2048 private 100 ops took 38.970 sec, avg 389.700 ms, 2.566 ops/sec
DH 2048 key gen 7 ops took 1.120 sec, avg 160.000 ms, 6.250 ops/sec
DH 2048 agree 100 ops took 16.000 sec, avg 160.000 ms, 6.250 ops/sec
ECC [ SECP256R1] 256 key gen 500 ops took 1.220 sec, avg 2.440 ms, 409.836 ops/sec
ECDHE [ SECP256R1] 256 agree 400 ops took 1.140 sec, avg 2.850 ms, 350.878 ops/sec
ED 25519 key gen 381 ops took 1.000 sec, avg 2.625 ms, 381.000 ops/sec
ED 25519 sign 400 ops took 1.100 sec, avg 2.750 ms, 363.636 ops/sec
ED 25519 verify 100 ops took 1.020 sec, avg 10.200 ms, 98.039 ops/sec
Benchmark complete
------------------------------------------------------------------------------
OpenSSL version OpenSSL 1.1.1p 21 Jun 2022 (OpenSSL 1.1.1p 21 Jun 2022)
------------------------------------------------------------------------------
openSSL Benchmark (block bytes 1048576, min 1.0 sec each)
RNG 60 MB took 1.040 seconds, 57.692 MB/s
AES-128-CBC-enc 85 MB took 1.050 seconds, 80.952 MB/s
AES-128-CBC-dec 85 MB took 1.030 seconds, 82.524 MB/s
AES-192-CBC-enc 75 MB took 1.070 seconds, 70.094 MB/s
AES-192-CBC-dec 75 MB took 1.060 seconds, 70.755 MB/s
AES-256-CBC-enc 65 MB took 1.060 seconds, 61.321 MB/s
AES-256-CBC-dec 70 MB took 1.080 seconds, 64.815 MB/s
AES-128-GCM-enc 80 MB took 1.020 seconds, 78.431 MB/s
AES-128-GCM-dec 85 MB took 1.040 seconds, 81.731 MB/s
AES-192-GCM-enc 70 MB took 1.020 seconds, 68.628 MB/s
AES-192-GCM-dec 75 MB took 1.060 seconds, 70.755 MB/s
AES-256-GCM-enc 65 MB took 1.080 seconds, 60.185 MB/s
AES-256-GCM-dec 65 MB took 1.020 seconds, 63.726 MB/s
AES-128-ECB-enc 1 KB took 1.070 seconds, 1.241 KB/s
AES-128-ECB-dec 1 KB took 1.010 seconds, 1.315 KB/s
AES-192-ECB-enc 1 KB took 1.010 seconds, 1.083 KB/s
AES-192-ECB-dec 1 KB took 1.030 seconds, 1.138 KB/s
AES-256-ECB-enc 1 KB took 1.060 seconds, 0.958 KB/s
AES-256-ECB-dec 1 KB took 1.020 seconds, 0.996 KB/s
CHACHA 260 MB took 1.010 seconds, 257.426 MB/s
CHA-POLY 25 MB took 1.100 seconds, 22.727 MB/s
3DES 15 MB took 1.250 seconds, 12.000 MB/s
MD5 400 MB took 1.010 seconds, 396.040 MB/s
SHA1 390 MB took 1.010 seconds, 386.139 MB/s
SHA-224 105 MB took 1.040 seconds, 100.962 MB/s
SHA-256 105 MB took 1.010 seconds, 103.960 MB/s
SHA-384 25 MB took 1.070 seconds, 23.365 MB/s
SHA-512 25 MB took 1.080 seconds, 23.148 MB/s
SHA3-224 45 MB took 1.100 seconds, 40.909 MB/s
SHA3-256 40 MB took 1.020 seconds, 39.216 MB/s
SHA3-384 35 MB took 1.140 seconds, 30.702 MB/s
SHA3-512 25 MB took 1.130 seconds, 22.124 MB/s
RIPEMD 225 MB took 1.010 seconds, 222.772 MB/s
HMAC-MD5 405 MB took 1.010 seconds, 400.990 MB/s
HMAC-SHA 395 MB took 1.020 seconds, 387.255 MB/s
HMAC-SHA224 105 MB took 1.020 seconds, 102.941 MB/s
HMAC-SHA256 105 MB took 1.010 seconds, 103.960 MB/s
HMAC-SHA384 25 MB took 1.080 seconds, 23.148 MB/s
HMAC-SHA512 25 MB took 1.070 seconds, 23.365 MB/s
PBKDF2 10 KB took 1.000 seconds, 10.156 KB/s
RSA 2048 public 200 ops took 1.170 sec, avg 5.850 ms, 170.941 ops/sec
RSA 2048 private 100 ops took 21.810 sec, avg 218.100 ms, 4.585 ops/sec
ECC [ SECP256R1] 256 key gen 100 ops took 4.560 sec, avg 45.600 ms, 21.930 ops/sec
ECDHE [ SECP256R1] 256 agree 100 ops took 4.570 sec, avg 45.700 ms, 21.882 ops/sec
ED 25519 key gen 379 ops took 1.000 sec, avg 2.639 ms, 378.999 ops/sec
ED 25519 sign 400 ops took 1.070 sec, avg 2.675 ms, 373.834 ops/sec
ED 25519 verify 100 ops took 1.020 sec, avg 10.200 ms, 98.039 ops/sec
Benchmark complete
Results for gcc 7.5.0:
Code: Select all
------------------------------------------------------------------------------
wolfSSL version 5.5.0
------------------------------------------------------------------------------
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
RNG 45 MB took 1.110 seconds, 40.541 MB/s
AES-128-CBC-enc 50 MB took 1.020 seconds, 49.020 MB/s
AES-128-CBC-dec 45 MB took 1.070 seconds, 42.056 MB/s
AES-192-CBC-enc 45 MB took 1.050 seconds, 42.857 MB/s
AES-192-CBC-dec 40 MB took 1.070 seconds, 37.383 MB/s
AES-256-CBC-enc 40 MB took 1.060 seconds, 37.736 MB/s
AES-256-CBC-dec 35 MB took 1.060 seconds, 33.019 MB/s
AES-128-GCM-enc 10 MB took 1.870 seconds, 5.348 MB/s
AES-128-GCM-dec 10 MB took 1.860 seconds, 5.376 MB/s
AES-192-GCM-enc 10 MB took 1.880 seconds, 5.319 MB/s
AES-192-GCM-dec 10 MB took 1.910 seconds, 5.236 MB/s
AES-256-GCM-enc 10 MB took 1.930 seconds, 5.181 MB/s
AES-256-GCM-dec 10 MB took 1.900 seconds, 5.263 MB/s
GMAC Default 7 MB took 1.160 seconds, 6.034 MB/s
AES-128-ECB-enc 13 MB took 1.000 seconds, 13.401 MB/s
AES-128-ECB-dec 13 MB took 1.000 seconds, 13.273 MB/s
AES-192-ECB-enc 13 MB took 1.000 seconds, 12.927 MB/s
AES-192-ECB-dec 13 MB took 1.000 seconds, 12.750 MB/s
AES-256-ECB-enc 12 MB took 1.000 seconds, 12.402 MB/s
AES-256-ECB-dec 12 MB took 1.000 seconds, 12.458 MB/s
CHACHA 165 MB took 1.010 seconds, 163.368 MB/s
CHA-POLY 20 MB took 1.260 seconds, 15.873 MB/s
3DES 20 MB took 1.330 seconds, 15.038 MB/s
MD5 360 MB took 1.020 seconds, 352.942 MB/s
POLY1305 20 MB took 1.150 seconds, 17.391 MB/s
SHA 255 MB took 1.010 seconds, 252.475 MB/s
SHA-224 110 MB took 1.030 seconds, 106.796 MB/s
SHA-256 110 MB took 1.040 seconds, 105.769 MB/s
SHA-384 25 MB took 1.010 seconds, 24.752 MB/s
SHA-512 25 MB took 1.020 seconds, 24.510 MB/s
SHA3-224 35 MB took 1.030 seconds, 33.981 MB/s
SHA3-256 35 MB took 1.070 seconds, 32.710 MB/s
SHA3-384 30 MB took 1.190 seconds, 25.210 MB/s
SHA3-512 20 MB took 1.150 seconds, 17.391 MB/s
RIPEMD 210 MB took 1.020 seconds, 205.883 MB/s
HMAC-MD5 360 MB took 1.010 seconds, 356.436 MB/s
HMAC-SHA 260 MB took 1.010 seconds, 257.426 MB/s
HMAC-SHA224 110 MB took 1.010 seconds, 108.911 MB/s
HMAC-SHA256 110 MB took 1.010 seconds, 108.911 MB/s
HMAC-SHA384 30 MB took 1.200 seconds, 25.000 MB/s
HMAC-SHA512 30 MB took 1.200 seconds, 25.000 MB/s
PBKDF2 11 KB took 1.000 seconds, 11.281 KB/s
RSA 2048 public 200 ops took 1.360 sec, avg 6.800 ms, 147.059 ops/sec
RSA 2048 private 100 ops took 42.870 sec, avg 428.700 ms, 2.333 ops/sec
DH 2048 key gen 6 ops took 1.120 sec, avg 186.666 ms, 5.357 ops/sec
DH 2048 agree 100 ops took 18.420 sec, avg 184.200 ms, 5.429 ops/sec
ECC [ SECP256R1] 256 key gen 400 ops took 1.050 sec, avg 2.625 ms, 380.953 ops/sec
ECDHE [ SECP256R1] 256 agree 400 ops took 1.250 sec, avg 3.125 ms, 320.000 ops/sec
ED 25519 key gen 349 ops took 1.000 sec, avg 2.865 ms, 349.000 ops/sec
ED 25519 sign 400 ops took 1.130 sec, avg 2.825 ms, 353.982 ops/sec
ED 25519 verify 100 ops took 1.110 sec, avg 11.100 ms, 90.090 ops/sec
Benchmark complete
------------------------------------------------------------------------------
OpenSSL version OpenSSL 1.1.1p 21 Jun 2022 (OpenSSL 1.1.1p 21 Jun 2022)
------------------------------------------------------------------------------
openSSL Benchmark (block bytes 1048576, min 1.0 sec each)
RNG 55 MB took 1.040 seconds, 52.884 MB/s
AES-128-CBC-enc 75 MB took 1.050 seconds, 71.429 MB/s
AES-128-CBC-dec 80 MB took 1.060 seconds, 75.472 MB/s
AES-192-CBC-enc 70 MB took 1.080 seconds, 64.815 MB/s
AES-192-CBC-dec 70 MB took 1.060 seconds, 66.038 MB/s
AES-256-CBC-enc 55 MB took 1.020 seconds, 53.922 MB/s
AES-256-CBC-dec 60 MB took 1.030 seconds, 58.252 MB/s
AES-128-GCM-enc 75 MB took 1.010 seconds, 74.257 MB/s
AES-128-GCM-dec 75 MB took 1.030 seconds, 72.816 MB/s
AES-192-GCM-enc 70 MB took 1.080 seconds, 64.815 MB/s
AES-192-GCM-dec 65 MB took 1.050 seconds, 61.905 MB/s
AES-256-GCM-enc 60 MB took 1.060 seconds, 56.604 MB/s
AES-256-GCM-dec 60 MB took 1.070 seconds, 56.075 MB/s
AES-128-ECB-enc 1 KB took 1.040 seconds, 1.127 KB/s
AES-128-ECB-dec 1 KB took 1.010 seconds, 1.160 KB/s
AES-192-ECB-enc 1 KB took 1.060 seconds, 0.958 KB/s
AES-192-ECB-dec 1 KB took 1.010 seconds, 1.006 KB/s
AES-256-ECB-enc 960 bytes took 1.090 seconds, 880.735 bytes/s
AES-256-ECB-dec 960 bytes took 1.050 seconds, 914.287 bytes/s
CHACHA 275 MB took 1.020 seconds, 269.608 MB/s
CHA-POLY 25 MB took 1.050 seconds, 23.810 MB/s
3DES 15 MB took 1.190 seconds, 12.605 MB/s
MD5 365 MB took 1.020 seconds, 357.843 MB/s
SHA1 305 MB took 1.010 seconds, 301.980 MB/s
SHA-224 100 MB took 1.010 seconds, 99.010 MB/s
SHA-256 100 MB took 1.020 seconds, 98.039 MB/s
SHA-384 30 MB took 1.110 seconds, 27.027 MB/s
SHA-512 30 MB took 1.110 seconds, 27.027 MB/s
SHA3-224 60 MB took 1.080 seconds, 55.556 MB/s
SHA3-256 55 MB took 1.030 seconds, 53.398 MB/s
SHA3-384 45 MB took 1.070 seconds, 42.056 MB/s
SHA3-512 30 MB took 1.020 seconds, 29.412 MB/s
RIPEMD 210 MB took 1.010 seconds, 207.921 MB/s
HMAC-MD5 365 MB took 1.020 seconds, 357.843 MB/s
HMAC-SHA 310 MB took 1.020 seconds, 303.922 MB/s
HMAC-SHA224 100 MB took 1.010 seconds, 99.010 MB/s
HMAC-SHA256 100 MB took 1.010 seconds, 99.010 MB/s
HMAC-SHA384 30 MB took 1.100 seconds, 27.273 MB/s
HMAC-SHA512 30 MB took 1.100 seconds, 27.273 MB/s
PBKDF2 10 KB took 1.000 seconds, 10.031 KB/s
RSA 2048 public 200 ops took 1.150 sec, avg 5.750 ms, 173.913 ops/sec
RSA 2048 private 100 ops took 21.730 sec, avg 217.300 ms, 4.602 ops/sec
ECC [ SECP256R1] 256 key gen 100 ops took 4.560 sec, avg 45.600 ms, 21.930 ops/sec
ECDHE [ SECP256R1] 256 agree 100 ops took 4.600 sec, avg 46.000 ms, 21.739 ops/sec
ED 25519 key gen 386 ops took 1.000 sec, avg 2.591 ms, 385.999 ops/sec
ED 25519 sign 400 ops took 1.050 sec, avg 2.625 ms, 380.955 ops/sec
ED 25519 verify 200 ops took 1.960 sec, avg 9.800 ms, 102.041 ops/sec
Benchmark complete
As you can see, most functions perform better with gcc 7, but there are also some that are worse.