其中

  • 通用版本:即本文未采用任何优化的版本
  • 部分汇编优化:仅用汇编优化gm_i_bn_add_xgm_i_bn_subgm_i_bn_mul三个函数
  • 汇编实现:即大部分采用汇编实现,大家可以参考gmssl的汇编实现。
算法 计算次数 通用版本 部分汇编优化 汇编实现
gmp_add 2亿次 12.510s 5.220s 1.535s
gmn_add 2亿次 12.279s 5.422s 1.480s
gmp_sub 2亿次 12.369s 5.407s 1.563s
gmn_sub 2亿次 12.051s 5.540s 1.462s
gmp_mul 1千万次 12.381s 3.776s 0.338s
gmn_mul 1千万次 12.324s 3.634s 0.471s
gmp_sqr 1千万次 12.256s 3.652s 0.273s
gmn_sqr 1千万次 12.278s 3.652s 0.405s
gmp_exp 1万次 4.949s 1.377s 0.137s
gmn_exp 1万次 4.775s 1.367s 0.172s
gmp_inv 1万次 6.011s 1.715s 0.091s
gmn_inv 1万次 5.494s 1.607s 0.145s
point_dbl 10万次 1.232s 0.380s 0.039s
point_add 10万次 2.081s 0.612s 0.076s
point_mul 1千次 6.242s 1.615s 0.140s
gm_sv 1千次 19.420s 5.502s 0.221s
gm_sign 1千次 6.728s 1.962s 0.058s
gm_verify 1千次 12.129s 3.544s 0.170s