Skip to content

Latest commit

 

History

History
330 lines (309 loc) · 14.7 KB

BENCHMARKS.md

File metadata and controls

330 lines (309 loc) · 14.7 KB

Benchmarks

Table of Contents

Benchmark strategy

Gas cost is derived by taking the average timing of the same operations over different implementations and assuming a constant 51 MGas/second. Since the execution time is machine-specific, this constant is determined based on execution times of ECRECOVER and BNPAIR precompiles on my machine and their proposed gas price (63.8 MGas/s for ECRECOVER and 37.8 MGas/s for BNPAIR). Following are the proposed methods to time the precompile operations:

  • G1 addition: Average timing of 1000 random samples.
  • G1 multiplication: Average timing of 1000 samples of random worst-case of double-and-add algorithm (scalar of max bit length and max hamming weight and random base points in G1)
  • G2 addition: Average timing of 1000 random samples
  • G2 multiplication: Average timing of 1000 samples of radnom worst-case of double-and-add algorithm (scalar of max bit length and max hamming weight and random base points in G2)
  • G1 and G2 multiexponentiations: Expected to be performed by the Peppinger algorithm, with a table prepared for discount in case of k <= 128 points in the multiexponentiation with a discount cup max_discount for k > 128. To avoid non-integer arithmetic call cost is calculated as k * multiplication_cost * discount / multiplier where multiplier = 1000, k is a number of (scalar, point) pairs for the call, multiplication_cost is a corresponding single multiplication call cost for G1/G2.
  • Pairing: Average timing of 1000 random samples (random points in G1 and G2) for different number of pairs with linear lifting.

Benchmark Results

Bn

Pairing for 1000 samples
2.09 ms (✅ 1.00x)

Arithmetic for BW6_761::G1

Arithmetic
Addition 3.52 us (✅ 1.00x)
Scalar Multiplication(worst-case) 1.27 ms (✅ 1.00x)

MSM for BW6_761::G1

MSM
1 1.59 ms (✅ 1.00x)
2 1.84 ms (✅ 1.00x)
3 2.11 ms (✅ 1.00x)
4 2.38 ms (✅ 1.00x)
5 2.65 ms (✅ 1.00x)
6 2.92 ms (✅ 1.00x)
7 3.18 ms (✅ 1.00x)
8 3.45 ms (✅ 1.00x)
9 3.72 ms (✅ 1.00x)
10 3.99 ms (✅ 1.00x)
11 4.25 ms (✅ 1.00x)
12 4.52 ms (✅ 1.00x)
13 4.83 ms (✅ 1.00x)
14 5.07 ms (✅ 1.00x)
15 5.33 ms (✅ 1.00x)
16 5.60 ms (✅ 1.00x)
17 5.87 ms (✅ 1.00x)
18 6.14 ms (✅ 1.00x)
19 6.41 ms (✅ 1.00x)
20 6.68 ms (✅ 1.00x)
21 7.00 ms (✅ 1.00x)
22 7.18 ms (✅ 1.00x)
23 7.47 ms (✅ 1.00x)
24 7.72 ms (✅ 1.00x)
25 8.00 ms (✅ 1.00x)
26 8.30 ms (✅ 1.00x)
27 8.54 ms (✅ 1.00x)
28 8.81 ms (✅ 1.00x)
29 9.09 ms (✅ 1.00x)
30 9.36 ms (✅ 1.00x)
31 9.70 ms (✅ 1.00x)
32 8.82 ms (✅ 1.00x)
33 9.44 ms (✅ 1.00x)
34 9.60 ms (✅ 1.00x)
35 9.82 ms (✅ 1.00x)
36 9.89 ms (✅ 1.00x)
37 10.05 ms (✅ 1.00x)
38 10.19 ms (✅ 1.00x)
39 10.39 ms (✅ 1.00x)
40 10.51 ms (✅ 1.00x)
41 10.74 ms (✅ 1.00x)
42 10.79 ms (✅ 1.00x)
43 10.96 ms (✅ 1.00x)
44 11.13 ms (✅ 1.00x)
45 11.29 ms (✅ 1.00x)
46 11.44 ms (✅ 1.00x)
47 11.58 ms (✅ 1.00x)
48 11.99 ms (✅ 1.00x)
49 12.00 ms (✅ 1.00x)
50 12.02 ms (✅ 1.00x)
51 12.30 ms (✅ 1.00x)
52 12.45 ms (✅ 1.00x)
53 12.64 ms (✅ 1.00x)
54 12.67 ms (✅ 1.00x)
55 12.82 ms (✅ 1.00x)
56 12.99 ms (✅ 1.00x)
57 13.13 ms (✅ 1.00x)
58 13.39 ms (✅ 1.00x)
59 13.42 ms (✅ 1.00x)
60 13.62 ms (✅ 1.00x)
61 13.87 ms (✅ 1.00x)
62 14.04 ms (✅ 1.00x)
63 14.09 ms (✅ 1.00x)
64 14.34 ms (✅ 1.00x)
65 14.35 ms (✅ 1.00x)
66 14.63 ms (✅ 1.00x)
67 14.78 ms (✅ 1.00x)
68 14.94 ms (✅ 1.00x)
69 15.10 ms (✅ 1.00x)
70 15.23 ms (✅ 1.00x)
71 15.27 ms (✅ 1.00x)
72 15.45 ms (✅ 1.00x)
73 15.61 ms (✅ 1.00x)
74 15.75 ms (✅ 1.00x)
75 15.91 ms (✅ 1.00x)
76 16.06 ms (✅ 1.00x)
77 16.24 ms (✅ 1.00x)
78 16.33 ms (✅ 1.00x)
79 16.51 ms (✅ 1.00x)
80 16.71 ms (✅ 1.00x)
81 16.80 ms (✅ 1.00x)
82 17.16 ms (✅ 1.00x)
83 17.31 ms (✅ 1.00x)
84 17.45 ms (✅ 1.00x)
85 17.62 ms (✅ 1.00x)
86 17.78 ms (✅ 1.00x)
87 17.93 ms (✅ 1.00x)
88 18.08 ms (✅ 1.00x)
89 18.18 ms (✅ 1.00x)
90 18.35 ms (✅ 1.00x)
91 18.51 ms (✅ 1.00x)
92 18.67 ms (✅ 1.00x)
93 18.68 ms (✅ 1.00x)
94 19.18 ms (✅ 1.00x)
95 19.01 ms (✅ 1.00x)
96 19.47 ms (✅ 1.00x)
97 19.35 ms (✅ 1.00x)
98 19.63 ms (✅ 1.00x)
99 19.79 ms (✅ 1.00x)
100 19.95 ms (✅ 1.00x)
101 20.08 ms (✅ 1.00x)
102 20.26 ms (✅ 1.00x)
103 20.44 ms (✅ 1.00x)
104 20.58 ms (✅ 1.00x)
105 20.75 ms (✅ 1.00x)
106 20.87 ms (✅ 1.00x)
107 20.96 ms (✅ 1.00x)
108 21.04 ms (✅ 1.00x)
109 21.17 ms (✅ 1.00x)
110 21.50 ms (✅ 1.00x)
111 21.59 ms (✅ 1.00x)
112 21.82 ms (✅ 1.00x)
113 21.82 ms (✅ 1.00x)
114 22.11 ms (✅ 1.00x)
115 22.29 ms (✅ 1.00x)
116 22.28 ms (✅ 1.00x)
117 22.44 ms (✅ 1.00x)
118 22.58 ms (✅ 1.00x)
119 22.70 ms (✅ 1.00x)
120 22.90 ms (✅ 1.00x)
121 23.02 ms (✅ 1.00x)
122 23.20 ms (✅ 1.00x)
123 23.38 ms (✅ 1.00x)
124 23.48 ms (✅ 1.00x)
125 23.55 ms (✅ 1.00x)
126 23.90 ms (✅ 1.00x)
127 24.12 ms (✅ 1.00x)
128 24.24 ms (✅ 1.00x)

Arithmetic for BW6_761::G2

Arithmetic
Addition 3.49 us (✅ 1.00x)
Scalar Multiplication(worst-case) 1.26 ms (✅ 1.00x)

MSM for BW6_761::G2

MSM
1 1.57 ms (✅ 1.00x)
2 1.83 ms (✅ 1.00x)
3 2.11 ms (✅ 1.00x)
4 2.37 ms (✅ 1.00x)
5 2.64 ms (✅ 1.00x)
6 2.90 ms (✅ 1.00x)
7 3.18 ms (✅ 1.00x)
8 3.44 ms (✅ 1.00x)
9 3.72 ms (✅ 1.00x)
10 3.98 ms (✅ 1.00x)
11 4.26 ms (✅ 1.00x)
12 4.50 ms (✅ 1.00x)
13 4.78 ms (✅ 1.00x)
14 5.05 ms (✅ 1.00x)
15 5.33 ms (✅ 1.00x)
16 5.60 ms (✅ 1.00x)
17 5.86 ms (✅ 1.00x)
18 6.14 ms (✅ 1.00x)
19 6.39 ms (✅ 1.00x)
20 6.67 ms (✅ 1.00x)
21 6.94 ms (✅ 1.00x)
22 7.21 ms (✅ 1.00x)
23 7.54 ms (✅ 1.00x)
24 7.81 ms (✅ 1.00x)
25 8.01 ms (✅ 1.00x)
26 8.33 ms (✅ 1.00x)
27 8.58 ms (✅ 1.00x)
28 8.88 ms (✅ 1.00x)
29 9.08 ms (✅ 1.00x)
30 9.36 ms (✅ 1.00x)
31 9.63 ms (✅ 1.00x)
32 8.74 ms (✅ 1.00x)
33 9.43 ms (✅ 1.00x)
34 9.57 ms (✅ 1.00x)
35 9.83 ms (✅ 1.00x)
36 9.98 ms (✅ 1.00x)
37 10.15 ms (✅ 1.00x)
38 10.28 ms (✅ 1.00x)
39 10.43 ms (✅ 1.00x)
40 10.58 ms (✅ 1.00x)
41 10.72 ms (✅ 1.00x)
42 10.89 ms (✅ 1.00x)
43 11.04 ms (✅ 1.00x)
44 11.20 ms (✅ 1.00x)
45 11.36 ms (✅ 1.00x)
46 11.50 ms (✅ 1.00x)
47 11.66 ms (✅ 1.00x)
48 11.82 ms (✅ 1.00x)
49 11.90 ms (✅ 1.00x)
50 12.08 ms (✅ 1.00x)
51 12.24 ms (✅ 1.00x)
52 12.47 ms (✅ 1.00x)
53 12.64 ms (✅ 1.00x)
54 12.79 ms (✅ 1.00x)
55 12.85 ms (✅ 1.00x)
56 13.00 ms (✅ 1.00x)
57 13.26 ms (✅ 1.00x)
58 13.41 ms (✅ 1.00x)
59 13.46 ms (✅ 1.00x)
60 13.62 ms (✅ 1.00x)
61 13.87 ms (✅ 1.00x)
62 14.02 ms (✅ 1.00x)
63 14.15 ms (✅ 1.00x)
64 14.30 ms (✅ 1.00x)
65 14.40 ms (✅ 1.00x)
66 14.62 ms (✅ 1.00x)
67 14.76 ms (✅ 1.00x)
68 14.86 ms (✅ 1.00x)
69 15.00 ms (✅ 1.00x)
70 15.18 ms (✅ 1.00x)
71 15.28 ms (✅ 1.00x)
72 15.43 ms (✅ 1.00x)
73 15.64 ms (✅ 1.00x)
74 15.80 ms (✅ 1.00x)
75 15.94 ms (✅ 1.00x)
76 16.08 ms (✅ 1.00x)
77 16.24 ms (✅ 1.00x)
78 16.41 ms (✅ 1.00x)
79 16.57 ms (✅ 1.00x)
80 16.82 ms (✅ 1.00x)
81 16.85 ms (✅ 1.00x)
82 17.07 ms (✅ 1.00x)
83 17.25 ms (✅ 1.00x)
84 17.40 ms (✅ 1.00x)
85 17.41 ms (✅ 1.00x)
86 17.77 ms (✅ 1.00x)
87 17.90 ms (✅ 1.00x)
88 18.08 ms (✅ 1.00x)
89 18.25 ms (✅ 1.00x)
90 18.39 ms (✅ 1.00x)
91 18.54 ms (✅ 1.00x)
92 18.71 ms (✅ 1.00x)
93 18.87 ms (✅ 1.00x)
94 19.01 ms (✅ 1.00x)
95 18.99 ms (✅ 1.00x)
96 19.13 ms (✅ 1.00x)
97 19.29 ms (✅ 1.00x)
98 19.44 ms (✅ 1.00x)
99 19.58 ms (✅ 1.00x)
100 19.79 ms (✅ 1.00x)
101 20.11 ms (✅ 1.00x)
102 20.05 ms (✅ 1.00x)
103 20.22 ms (✅ 1.00x)
104 20.36 ms (✅ 1.00x)
105 20.57 ms (✅ 1.00x)
106 20.69 ms (✅ 1.00x)
107 20.81 ms (✅ 1.00x)
108 21.03 ms (✅ 1.00x)
109 21.28 ms (✅ 1.00x)
110 21.31 ms (✅ 1.00x)
111 21.48 ms (✅ 1.00x)
112 21.63 ms (✅ 1.00x)
113 21.74 ms (✅ 1.00x)
114 21.86 ms (✅ 1.00x)
115 22.06 ms (✅ 1.00x)
116 22.24 ms (✅ 1.00x)
117 22.35 ms (✅ 1.00x)
118 22.51 ms (✅ 1.00x)
119 22.64 ms (✅ 1.00x)
120 22.84 ms (✅ 1.00x)
121 23.21 ms (✅ 1.00x)
122 23.38 ms (✅ 1.00x)
123 23.49 ms (✅ 1.00x)
124 23.44 ms (✅ 1.00x)
125 23.60 ms (✅ 1.00x)
126 23.75 ms (✅ 1.00x)
127 24.15 ms (✅ 1.00x)
128 24.07 ms (✅ 1.00x)

Pairing for BW6_671

Pairing
2 8.45 ms (✅ 1.00x)
4 12.77 ms (✅ 1.00x)
8 22.52 ms (✅ 1.00x)
12 33.12 ms (✅ 1.00x)
16 41.99 ms (✅ 1.00x)

ECRECOVER

ECRECOVER for 100000 samples
47.05 us (✅ 1.00x)

Made with criterion-table