golang rsa 和 cgo (openssl) 性能对比 - Go语言中文社区

golang rsa 和 cgo (openssl) 性能对比


最近在做一个 使用 golang 开发 聚合支付网关的项目,其中要使用 rsa 签名算法 进行支付宝参数签名, 在压测 的时候发现 rsa 签名 性能十分低下,网上查资料 有人说 使用 openssl 的速度是 golang 的数倍, 于是我就用cgo (openssl) 和 golang rsa 做了一个对比,发现居然相差五倍,openssl 完胜。

下面是我的实现代码地址,有兴趣的可以下载运行试一下

https://github.com/Bulesxz/rsa_cgo.git

运行

go get github.com/Bulesxz/rsa_cgo

go test -bench="."

测试环境:

硬件概览:
  型号名称: MacBook Pro
  型号标识符:    MacBookPro13,2
  处理器名称:    Intel Core i5
  处理器速度:    3.1 GHz
  处理器数目:    1
  核总数:  2
  L2 缓存(每个核):   256 KB
  L3 缓存:    4 MB
  内存:   16 GB

os: osx 10.12.3

openssl: OpenSSL 1.1.0f  25 May 2017

golang: go version go1.8.3 darwin/amd64

经过测试 发现cgo openssl 的性能是 golang 的 5倍左右 ,5倍!!!!!

BenchmarkGoRsa-4            2000            670399 ns/op
BenchmarkCgoRsa-4          10000            122419 ns/op

场景应用

使用golang rsa 签名的 高并发 程序,比如聚合支付相关(支付宝API)

注意

本人的openssl 安装在 /usr/local/Cellar/openssl@1.1/1.1.0f/ 不在此目录的可以视情况而改动 makefile

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/5518d82b3f4f
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-09 22:17:19
  • 阅读 ( 1436 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢