[FFmpeg-devel] [PATCH] tools: add benchmark for crypto functions.

Nicolas George nicolas.george at normalesup.org
Fri Jul 26 16:39:30 CEST 2013


And for reference, here are the results I get on various hardware, and some
remarks.

First, lavu's implementations are never the fastest, but they are almost
never the slowest either, and always quite reasonable.

Second, there is something strange going on with lavu and gcrypt on AMD in
64 bits that is ruining AES speed.

Third, LibTomCrypt's AES is very good, it is the fastest in almost all
cases, usually by a significant margin compared to the two mainstream
libraries. There are probably optimizations to imitate.

(LibTomCrypt is a not well known nice little library; and it is Public
Domain.)

Regards,

-- 
  Nicolas George


Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz (64 bits)
(crypt 1.0.1e, gcrypt 1.5.2, tomcrypt 1.17)

lavu     MD5      size:  1048576  runs:   1024  time:    5.162 +- 0.019
crypto   MD5      size:  1048576  runs:   1024  time:    5.083 +- 0.341
gcrypt   MD5      size:  1048576  runs:   1024  time:    5.543 +- 0.028
tomcrypt MD5      size:  1048576  runs:   1024  time:    5.510 +- 0.021
lavu     SHA-1    size:  1048576  runs:   1024  time:    7.011 +- 0.079
crypto   SHA-1    size:  1048576  runs:   1024  time:    4.698 +- 0.221
gcrypt   SHA-1    size:  1048576  runs:   1024  time:   10.282 +- 0.345
tomcrypt SHA-1    size:  1048576  runs:   1024  time:    8.604 +- 0.127
lavu     SHA-224  size:  1048576  runs:   1024  time:   14.847 +- 0.582
crypto   SHA-224  size:  1048576  runs:   1024  time:   12.871 +- 0.424
gcrypt   SHA-224  size:  1048576  runs:   1024  time:   17.245 +- 0.782
tomcrypt SHA-224  size:  1048576  runs:   1024  time:   15.338 +- 0.172
lavu     SHA-256  size:  1048576  runs:   1024  time:   14.810 +- 0.183
crypto   SHA-256  size:  1048576  runs:   1024  time:   12.840 +- 0.271
gcrypt   SHA-256  size:  1048576  runs:   1024  time:   17.172 +- 0.136
tomcrypt SHA-256  size:  1048576  runs:   1024  time:   15.328 +- 0.104
lavu     AES-128  size:  1048576  runs:   1024  time:   26.601 +- 1.108
crypto   AES-128  size:  1048576  runs:   1024  time:   25.172 +- 0.222
gcrypt   AES-128  size:  1048576  runs:   1024  time:   24.207 +- 0.223
tomcrypt AES-128  size:  1048576  runs:   1024  time:   15.577 +- 0.178

Intel(R) Atom(TM) CPU D525   @ 1.80GHz (64 bits)
(crypt 1.0.1e, gcrypt 1.5.2, tomcrypt 1.17)

lavu     MD5      size:  1048576  runs:   1024  time:    6.350 +- 0.282
crypto   MD5      size:  1048576  runs:   1024  time:    5.697 +- 0.066
gcrypt   MD5      size:  1048576  runs:   1024  time:    7.309 +- 0.022
tomcrypt MD5      size:  1048576  runs:   1024  time:    7.229 +- 0.035
lavu     SHA-1    size:  1048576  runs:   1024  time:   16.395 +- 0.037
crypto   SHA-1    size:  1048576  runs:   1024  time:    9.615 +- 0.037
gcrypt   SHA-1    size:  1048576  runs:   1024  time:   18.169 +- 0.038
tomcrypt SHA-1    size:  1048576  runs:   1024  time:   17.021 +- 0.037
lavu     SHA-224  size:  1048576  runs:   1024  time:   36.711 +- 0.062
crypto   SHA-224  size:  1048576  runs:   1024  time:   24.585 +- 1.181
gcrypt   SHA-224  size:  1048576  runs:   1024  time:   42.496 +- 0.212
tomcrypt SHA-224  size:  1048576  runs:   1024  time:   33.125 +- 0.180
lavu     SHA-256  size:  1048576  runs:   1024  time:   37.133 +- 0.170
crypto   SHA-256  size:  1048576  runs:   1024  time:   24.853 +- 0.196
gcrypt   SHA-256  size:  1048576  runs:   1024  time:   42.516 +- 0.269
tomcrypt SHA-256  size:  1048576  runs:   1024  time:   33.121 +- 0.279
lavu     AES-128  size:  1048576  runs:   1024  time:   60.123 +- 0.587
crypto   AES-128  size:  1048576  runs:   1024  time:   68.416 +- 0.870
gcrypt   AES-128  size:  1048576  runs:   1024  time:   75.074 +- 1.697
tomcrypt AES-128  size:  1048576  runs:   1024  time:   46.841 +- 0.827

Athlon(tm) Dual Core Processor 4050e (64 bits)
(crypt 0.9.8o, gcrypt 1.4.5, tomcrypt 1.17)

lavu     MD5      size:  1048576  runs:   1024  time:    5.614 +- 0.018
crypto   MD5      size:  1048576  runs:   1024  time:    5.297 +- 0.015
gcrypt   MD5      size:  1048576  runs:   1024  time:    6.428 +- 0.028
tomcrypt MD5      size:  1048576  runs:   1024  time:    6.119 +- 0.016
lavu     SHA-1    size:  1048576  runs:   1024  time:    9.831 +- 0.015
crypto   SHA-1    size:  1048576  runs:   1024  time:    6.882 +- 0.014
gcrypt   SHA-1    size:  1048576  runs:   1024  time:    9.971 +- 0.030
tomcrypt SHA-1    size:  1048576  runs:   1024  time:   10.752 +- 0.030
lavu     SHA-224  size:  1048576  runs:   1024  time:   19.934 +- 0.037
crypto   SHA-224  size:  1048576  runs:   1024  time:   15.833 +- 0.030
gcrypt   SHA-224  size:  1048576  runs:   1024  time:   22.979 +- 0.034
tomcrypt SHA-224  size:  1048576  runs:   1024  time:   20.690 +- 0.037
lavu     SHA-256  size:  1048576  runs:   1024  time:   19.934 +- 0.042
crypto   SHA-256  size:  1048576  runs:   1024  time:   15.837 +- 0.100
gcrypt   SHA-256  size:  1048576  runs:   1024  time:   22.981 +- 0.041
tomcrypt SHA-256  size:  1048576  runs:   1024  time:   20.689 +- 0.028
lavu     AES-128  size:  1048576  runs:   1024  time:   48.675 +- 0.060
crypto   AES-128  size:  1048576  runs:   1024  time:   15.922 +- 0.452
gcrypt   AES-128  size:  1048576  runs:   1024  time:   54.384 +- 0.065
tomcrypt AES-128  size:  1048576  runs:   1024  time:   17.258 +- 0.032

AMD Athlon(tm) II X2 250 Processor (32 bits)
(crypt 1.0.1e, gcrypt 1.5.0, tomcrypt 1.17)

lavu     MD5      size:  1048576  runs:   1024  time:    5.162 +- 0.019
crypto   MD5      size:  1048576  runs:   1024  time:    5.083 +- 0.341
gcrypt   MD5      size:  1048576  runs:   1024  time:    5.543 +- 0.028
tomcrypt MD5      size:  1048576  runs:   1024  time:    5.510 +- 0.021
lavu     SHA-1    size:  1048576  runs:   1024  time:    7.011 +- 0.079
crypto   SHA-1    size:  1048576  runs:   1024  time:    4.698 +- 0.221
gcrypt   SHA-1    size:  1048576  runs:   1024  time:   10.282 +- 0.345
tomcrypt SHA-1    size:  1048576  runs:   1024  time:    8.604 +- 0.127
lavu     SHA-224  size:  1048576  runs:   1024  time:   14.847 +- 0.582
crypto   SHA-224  size:  1048576  runs:   1024  time:   12.871 +- 0.424
gcrypt   SHA-224  size:  1048576  runs:   1024  time:   17.245 +- 0.782
tomcrypt SHA-224  size:  1048576  runs:   1024  time:   15.338 +- 0.172
lavu     SHA-256  size:  1048576  runs:   1024  time:   14.810 +- 0.183
crypto   SHA-256  size:  1048576  runs:   1024  time:   12.840 +- 0.271
gcrypt   SHA-256  size:  1048576  runs:   1024  time:   17.172 +- 0.136
tomcrypt SHA-256  size:  1048576  runs:   1024  time:   15.328 +- 0.104
lavu     AES-128  size:  1048576  runs:   1024  time:   26.601 +- 1.108
crypto   AES-128  size:  1048576  runs:   1024  time:   25.172 +- 0.222
gcrypt   AES-128  size:  1048576  runs:   1024  time:   24.207 +- 0.223
tomcrypt AES-128  size:  1048576  runs:   1024  time:   15.577 +- 0.178

Intel(R) Atom(TM) CPU N270   @ 1.60GHz (32 bits)
(crypt 0.9.8o, gcrypt 1.4.5, tomcrypt 1.17)

lavu     MD5      size:  1048576  runs:   1024  time:    9.241 +- 0.053
crypto   MD5      size:  1048576  runs:   1024  time:    6.226 +- 0.043
gcrypt   MD5      size:  1048576  runs:   1024  time:   12.582 +- 0.058
tomcrypt MD5      size:  1048576  runs:   1024  time:   12.479 +- 0.069
lavu     SHA-1    size:  1048576  runs:   1024  time:   22.875 +- 0.864
crypto   SHA-1    size:  1048576  runs:   1024  time:   14.440 +- 0.065
gcrypt   SHA-1    size:  1048576  runs:   1024  time:   31.756 +- 0.081
tomcrypt SHA-1    size:  1048576  runs:   1024  time:   22.933 +- 0.076
lavu     SHA-224  size:  1048576  runs:   1024  time:   48.577 +- 1.559
crypto   SHA-224  size:  1048576  runs:   1024  time:   62.749 +- 1.733
gcrypt   SHA-224  size:  1048576  runs:   1024  time:   72.942 +- 0.080
tomcrypt SHA-224  size:  1048576  runs:   1024  time:   45.990 +- 1.923
lavu     SHA-256  size:  1048576  runs:   1024  time:   48.576 +- 1.603
crypto   SHA-256  size:  1048576  runs:   1024  time:   62.633 +- 0.085
gcrypt   SHA-256  size:  1048576  runs:   1024  time:   73.045 +- 1.654
tomcrypt SHA-256  size:  1048576  runs:   1024  time:   45.987 +- 1.912
lavu     AES-128  size:  1048576  runs:   1024  time:   63.106 +- 0.089
crypto   AES-128  size:  1048576  runs:   1024  time:   63.368 +- 0.921
gcrypt   AES-128  size:  1048576  runs:   1024  time:   98.668 +- 1.535
tomcrypt AES-128  size:  1048576  runs:   1024  time:   52.848 +- 1.290
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130726/4446305a/attachment.asc>


More information about the ffmpeg-devel mailing list