下面是没开启AES-NI的情况,8KB块加密性能 275677KB/s
F:\3rdpart\openssl-OpenSSL_1_1_1c\apps>openssl speed -evp AES256
Doing aes-256-cbc for 3s on 16 size blocks: 20588056 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 5782150 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 1514163 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 816554 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 8192 size blocks: 100134 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 50478 aes-256-cbc's in 3.00s
OpenSSL 1.1.1c 28 May 2019
built on: Fri Mar 20 02:05:45 2020 UTC
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /MT /Zl /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /WX -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 109802.97k 123352.53k 129208.58k 280176.35k 273432.58k 275677.18k
下面是开启了AES-NI指令集之后,8KB块加密性能增加到了 1223587KB/s,是原来的4.4倍,而256B块加密性能是原来的9倍。
F:\3rdpart\openssl-OpenSSL_1_1_1c\apps>openssl speed -evp AES256
Doing aes-256-cbc for 3s on 16 size blocks: 146023514 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 50123679 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 13722555 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 3471554 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 448091 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 221037 aes-256-cbc's in 3.00s
OpenSSL 1.1.1c 28 May 2019
built on: Wed Apr 1 07:05:12 2020 UTC
options:bn(64,32) rc4(8x,mmx) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /MT /Zl /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /WX -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 778792.07k 1069305.15k 1170991.36k 1184957.10k 1223587.16k 1207156.74k
关闭AES-NI的方法是,加了386表示这是一个386兼容的处理器,也就禁用了386之后的所有指令集。
perl Configure VC-WIN32 no-shared 386
启用AES-NI的方法是,openssl会执行cpuid查询cpu支持的指令集,并动态启用。
perl Configure VC-WIN32 no-shared
测试机CPU为i7 9700