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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,935评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,292评论 19 139
  • Go最新资料汇总链接 Golang资料集 《Platform-native GUI library for Go》...
    Albert陈凯阅读 11,067评论 0 148
  • 小池塘,青衣墙。 夫妻同归,共看绵山长。 最是教人留恋处, 你耕我织,芳草倚斜阳。 时日纵,惜流芳。 花甲白鬓,不...
    书中一粒粟阅读 2,732评论 0 0
  • 假如我是你 我会好好的生根,发芽 无惧漫长的黑夜 即使柔弱也扛得住雨雪风霜 假如我是你 我不会守望着星空 只为刹那...
    蘋尔阅读 1,833评论 0 0