Updated SM4性能优化 (markdown)

Sun Yimin 2021-03-21 19:32:02 +08:00
parent c172c6610e
commit 7177a07d38

@ -88,4 +88,42 @@ asm部分改造自aes的实现优化结果很惊人
CMAC使用CBC模式加密来生成MAC基于CBC模式的串行化特点以及block加密的性能其性能必定没有GCM模式好。
# CFB和OFB
Golang没提供这两种模式的优化接口可能这两种模式不怎么推荐使用了况且也就CFB解密可以并行。
Golang没提供这两种模式的优化接口可能这两种模式不怎么推荐使用了况且也就CFB解密可以并行。
# 和AES的比较
相比而言差距还是有点大最大的是GCM sign/open, 有二十多倍。
CPU: i5-8265U
goos: windows
goarch: amd64
pkg: github.com/emmansun/gmsm/sm4_test
BenchmarkAESCBCEncrypt1K-8 914280 1279 ns/op 800.49 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CBCEncrypt1K-8 59565 20344 ns/op 50.34 MB/s 0 B/op 0 allocs/op
BenchmarkAESCBCDecrypt1K-8 798015 1671 ns/op 612.98 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CBCDecrypt1K-8 194020 5739 ns/op 178.44 MB/s 0 B/op 0 allocs/op
BenchmarkAESCFBEncrypt1K-8 601120 2085 ns/op 488.83 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CFBEncrypt1K-8 67990 21284 ns/op 47.88 MB/s 0 B/op 0 allocs/op
BenchmarkAESCFBDecrypt1K-8 750609 1774 ns/op 574.31 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CFBDecrypt1K-8 58508 17990 ns/op 56.64 MB/s 0 B/op 0 allocs/op
BenchmarkAESCFBDecrypt8K-8 82408 14005 ns/op 584.56 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CFBDecrypt8K-8 8594 141197 ns/op 57.98 MB/s 0 B/op 0 allocs/op
BenchmarkAESOFB1K-8 1000000 1222 ns/op 833.65 MB/s 0 B/op 0 allocs/op
BenchmarkSM4OFB1K-8 46080 22127 ns/op 46.05 MB/s 0 B/op 0 allocs/op
BenchmarkAESCTR1K-8 801361 1373 ns/op 741.94 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CTR1K-8 226635 6007 ns/op 169.65 MB/s 0 B/op 0 allocs/op
BenchmarkAESCTR8K-8 109918 11466 ns/op 714.01 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CTR8K-8 28767 48448 ns/op 168.99 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCMSeal1K-8 4178898 308 ns/op 3329.79 MB/s 0 B/op 0 allocs/op
BenchmarkSM4GCMSeal1K-8 236019 5334 ns/op 191.99 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCMOpen1K-8 4608244 313 ns/op 3272.58 MB/s 0 B/op 0 allocs/op
BenchmarkSM4GCMOpen1K-8 231393 8268 ns/op 123.85 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCMSign1K-8 7460964 182 ns/op 5619.56 MB/s 0 B/op 0 allocs/op
BenchmarkSM4GCMSign1K-8 2458273 429 ns/op 2384.52 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCMSign8K-8 1000000 1066 ns/op 7681.92 MB/s 0 B/op 0 allocs/op
BenchmarkSM4GCMSign8K-8 998692 1624 ns/op 5043.29 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCMSeal8K-8 639726 1707 ns/op 4798.52 MB/s 0 B/op 0 allocs/op
BenchmarkSM4GCMSeal8K-8 27079 48554 ns/op 168.72 MB/s 0 B/op 0 allocs/op
BenchmarkAESGCMOpen8K-8 668884 2139 ns/op 3829.27 MB/s 0 B/op 0 allocs/op
BenchmarkSM4GCMOpen8K-8 26265 53390 ns/op 153.44 MB/s 0 B/op 0 allocs/op
PASS
ok github.com/emmansun/gmsm/sm4_test 47.862s