Comments (2)
gfP2上平方运算:
原来的实现,两次gfP上平方,一次乘法,三次加法(加减法统一统计)2s+1m+3a
func (e *gfP2) SquareNC(a *gfP2) *gfP2 {
// Complex squaring algorithm:
// (xu+y)² = y^2-2*x^2 + 2*u*x*y
tx := &e.x
ty := &e.y
gfpSqr(tx, &a.x, 1)
gfpSqr(ty, &a.y, 1)
gfpSub(ty, ty, tx)
gfpSub(ty, ty, tx)
gfpMul(tx, &a.x, &a.y)
gfpAdd(tx, tx, tx)
}
性能:
goos: windows
goarch: amd64
pkg: github.com/emmansun/gmsm/sm9/bn256
cpu: Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz
BenchmarkGfP2Square-6 17473377 67.02 ns/op 0 B/op 0 allocs/op
新方法:2m + 5a
func (e *gfP2) SquareNC(a *gfP2) *gfP2 {
// Complex squaring algorithm:
// (xu+y)² = y^2-2*x^2 + 2*u*x*y
tx := &e.x
ty := &e.y
gfpAdd(ty, &a.x, &a.y)
gfpAdd(tx, &a.x, &a.x)
gfpSub(tx, &a.y, tx)
gfpMul(ty, tx, ty)
gfpMul(tx, &a.x, &a.y)
gfpAdd(ty, tx, ty)
gfpAdd(tx, tx, tx)
}
性能:
goos: windows
goarch: amd64
pkg: github.com/emmansun/gmsm/sm9/bn256
cpu: Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz
BenchmarkGfP2Square-6 18992389 61.83 ns/op 0 B/op 0 allocs/op
差距不大,约7-8%。
from gmsm.
发现gfpNeg函数的性能比较差,改用gfpSub函数。
from gmsm.
Related Issues (20)
- internal/bignat: sync crypto/internal/bigmod: improve verify/encrypt performance
- result of ECB decryption is incomplete HOT 5
- [plugin] Failed to compile as go plugin at buildmode=plugin HOT 3
- [sync sdk] crypto/x509: implement AddCertWithConstraint HOT 2
- [go1.22] crypto/x509: add new OID type and use it in Certificate
- [go1.20] crypto/x509: add support for PKCS8/PKIX X25519 key encodings
- crypto/x509: implement SetFallbackRoots HOT 1
- [go1.21] crypto/x509: surface ReasonCode in RevocationList API
- 0.26 版本 再mac arm上编译不通过 HOT 1
- SM9测试用例数据来源 HOT 2
- sm3: 优化KDF性能-共享哈希Z的中间结果 HOT 1
- sm3: 优化KDF性能-基于SIMD的多路并行(四路) HOT 2
- sm3: 优化KDF性能-AMD64基于AVX2的8路并行 HOT 1
- sync x509 update HOT 2
- Something wrong about Key Gen or/and Curve check HOT 2
- 中金版本支持 HOT 56
- 升级到v0.27.1后报错 slice bounds out of range [128:119] HOT 2
- pkcs7签名算法和bouncycastle的CMSSignedDataGenerator差异问题 HOT 21
- 这么好的库,顶一下 HOT 1
- smx509.CreateCertificate() error HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gmsm.