init: v1.0.0
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
//go:build (amd64 || arm64) && !generic && !generic32 && !generic64
|
||||
// +build amd64 arm64
|
||||
// +build !generic
|
||||
// +build !generic32
|
||||
// +build !generic64
|
||||
|
||||
package ec256
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/big"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func pointFromBig(x, y *big.Int) []uint64 {
|
||||
xyz := make([]uint64, 12)
|
||||
fromBig(xyz[0:4], maybeReduceModP(x))
|
||||
fromBig(xyz[4:8], maybeReduceModP(y))
|
||||
c256Mul(xyz[0:4], xyz[0:4], rr[:])
|
||||
c256Mul(xyz[4:8], xyz[4:8], rr[:])
|
||||
xyz[8] = montOne0
|
||||
xyz[9] = montOne1
|
||||
xyz[10] = montOne2
|
||||
xyz[11] = montOne3
|
||||
return xyz
|
||||
}
|
||||
|
||||
// func TestC256AddSpeed(t *testing.T) {
|
||||
// a := []uint64{0x715A4589334C74C7, 0x8FE30BBFF2660BE1, 0x5F9904466A39C994, 0x32C4AE2C1F198119}
|
||||
// b := []uint64{0x715A4589334C74C7, 0x8FE30BBFF2660BE1, 0x5F9904466A39C994, 0x32C4AE2C1F198119}
|
||||
// res := make([]uint64, 4)
|
||||
// begin := time.Now()
|
||||
// total := 1000000000
|
||||
// for i := 0; i < total; i++ {
|
||||
// c256Add(res, a, b)
|
||||
// }
|
||||
// elaspe := time.Since(begin)
|
||||
// fmt.Println("time: ", elaspe.Milliseconds(), "ms")
|
||||
// fmt.Println(int(float64(total) / float64(elaspe.Milliseconds()) * 1000))
|
||||
// }
|
||||
|
||||
func TestC256SqrSpeed(t *testing.T) {
|
||||
a := []uint64{0x715A4589334C74C7, 0x8FE30BBFF2660BE1, 0x5F9904466A39C994, 0x32C4AE2C1F198119}
|
||||
res := make([]uint64, 4)
|
||||
begin := time.Now()
|
||||
total := 100000000
|
||||
for i := 0; i < total; i++ {
|
||||
c256Sqr(res, a, 1)
|
||||
// c256Sqr(res, res, 1)
|
||||
// c256Sqr(res, res, 1)
|
||||
// c256Sqr(res, res, 1)
|
||||
}
|
||||
elaspe := time.Since(begin)
|
||||
fmt.Println("time: ", elaspe.Milliseconds(), "ms")
|
||||
fmt.Println(int(float64(total) / float64(elaspe.Milliseconds()) * 1000))
|
||||
}
|
||||
|
||||
func TestC256MulSpeed(t *testing.T) {
|
||||
a := []uint64{0x715A4589334C74C7, 0x8FE30BBFF2660BE1, 0x5F9904466A39C994, 0x32C4AE2C1F198119}
|
||||
b := []uint64{0x715A4589334C74C6, 0x8FE30BBFF2660BE1, 0x5F9904466A39C994, 0x32C4AE2C1F198119}
|
||||
res := make([]uint64, 4)
|
||||
total := 100000000
|
||||
begin := time.Now()
|
||||
for i := 0; i < total; i++ {
|
||||
c256Mul(res, a, b)
|
||||
}
|
||||
elaspe := time.Since(begin)
|
||||
fmt.Println("time: ", elaspe.Milliseconds(), "ms")
|
||||
fmt.Println(int(float64(total) / float64(elaspe.Milliseconds()) * 1000))
|
||||
}
|
||||
|
||||
func TestC256PointAddAsmSpeed(t *testing.T) {
|
||||
p1 := pointFromBig(c256.Gx, c256.Gy)
|
||||
x2, y2 := c256.ScalarMult(c256.Gx, c256.Gy, (new(big.Int).SetInt64(2)).Bytes())
|
||||
p2 := pointFromBig(x2, y2)
|
||||
var res [12]uint64
|
||||
begin := time.Now()
|
||||
total := 10000000
|
||||
for i := 0; i < total; i++ {
|
||||
c256PointAddAsm(res[:], p1, p2)
|
||||
}
|
||||
elaspe := time.Since(begin)
|
||||
fmt.Println("time: ", elaspe.Milliseconds(), "ms")
|
||||
fmt.Println(int(float64(total) / float64(elaspe.Milliseconds()) * 1000))
|
||||
}
|
||||
|
||||
func TestC256PointDoubleAsmSpeed(t *testing.T) {
|
||||
p1 := pointFromBig(c256.Gx, c256.Gy)
|
||||
var res [12]uint64
|
||||
begin := time.Now()
|
||||
total := 10000000
|
||||
for i := 0; i < total; i++ {
|
||||
c256PointDoubleAsm(res[:], p1)
|
||||
}
|
||||
elaspe := time.Since(begin)
|
||||
fmt.Println("time: ", elaspe.Milliseconds(), "ms")
|
||||
fmt.Println(int(float64(total) / float64(elaspe.Milliseconds()) * 1000))
|
||||
}
|
||||
|
||||
func TestC256InvSpeed(t *testing.T) {
|
||||
in := []uint64{34235, 23341, 3444, 55555}
|
||||
out := make([]uint64, 4)
|
||||
begin := time.Now()
|
||||
total := 1000000
|
||||
for i := 0; i < total; i++ {
|
||||
c256Inverse(out, in)
|
||||
}
|
||||
elaspe := time.Since(begin)
|
||||
fmt.Println("time: ", elaspe.Milliseconds(), "ms")
|
||||
fmt.Println(float64(total) / float64(elaspe.Milliseconds()) * 1000)
|
||||
}
|
||||
Reference in New Issue
Block a user