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

    原文作者:1行者
    原文地址: https://www.jianshu.com/p/5518d82b3f4f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞