From 1e66180e96321bd78a6327f2ae4d1ba9f8837e27 Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Thu, 9 May 2019 00:17:43 -0700 Subject: [PATCH] internal/ed25519: add benchmarks for scalar mul --- internal/edwards25519/scalarMul_test.go | 38 +++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/internal/edwards25519/scalarMul_test.go b/internal/edwards25519/scalarMul_test.go index 22d9c83..dccec8b 100644 --- a/internal/edwards25519/scalarMul_test.go +++ b/internal/edwards25519/scalarMul_test.go @@ -213,3 +213,41 @@ func TestVartimeMultiScalarMulMatchesBasepointMul(t *testing.T) { t.Error(err) } } + +// Benchmarks. + +func BenchmarkBasepointMul(t *testing.B) { + var p ProjP3 + + for i := 0; i < t.N; i++ { + p.BasepointMul(&dalekScalar) + } +} + +func BenchmarkScalarMul(t *testing.B) { + var p ProjP3 + + for i := 0; i < t.N; i++ { + p.ScalarMul(&dalekScalar, &B) + } +} + +func BenchmarkVartimeDoubleBaseMul(t *testing.B) { + var p ProjP3 + + for i := 0; i < t.N; i++ { + p.VartimeDoubleBaseMul(&dalekScalar, &dalekScalar, &B) + } +} + +func BenchmarkMultiscalarMulSize8(t *testing.B) { + var p ProjP3 + x := dalekScalar + + for i := 0; i < t.N; i++ { + p.MultiscalarMul([]scalar.Scalar{x, x, x, x, x, x, x, x}, []*ProjP3{&B, &B, &B, &B, &B, &B, &B, &B}) + } +} + +// TODO: add BenchmarkVartimeMultiscalarMulSize8 (need to have +// different scalars & points to measure cache effects).