Skip to content

Latest commit

 

History

History

caesar_crypt

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

关于凯撒加密,具体请看:https://en.wikipedia.org/wiki/Caesar_cipher 总而言之就是玩点没什么用的小心眼,把字母的顺序变化一下,让一般人类无法一眼看出来是什么。

本例子中通过这个简单的算法来展示汇编优化的过程。

各个实现方法的性能比较:(单位 mb/s, 越大越好)

  • cpu 类型:Intel(R) Xeon(R) Platinum 8369B CPU @ 2.70GHz
名称 说明 性能(mb/s)
plan9asm.CaesarCryptAsm go plan9 汇编实现 2976.7102
fastcgo.CaesarCryptByFastCgo c 实现,使用 fastcgo 调用,O3 编译优化 2931.4453
fastcgo.CaesarCryptByFastCgoAvx512 c 实现,使用 avx512 指令集 1725.3604
golang.CaesarCryptBySearchTable golang 实现,使用查表的方法 1595.8272
fastcgo.CaesarCryptByFastCgoAvx2 c 实现,使用 avx2 指令集
注意: 编译器可能把某些只支持 avx2 的某些函数编译成 avx512 的指令
805.2319
golang.CaesarCrypt golang 实现, 未使用查表的方法 735.1510
plan9asm.CaesarCryptAsmAvx2 go plan9 汇编实现,使用 avx2 指令集
(因为优化的意义不大,这里未深入优化)
650.8129