Skip to content

Commit 361b6a2

Browse files
wemeetagainspiral-ladder
authored andcommitted
feat: add some blst benchmarks
1 parent 7926626 commit 361b6a2

File tree

3 files changed

+126
-0
lines changed

3 files changed

+126
-0
lines changed

bench/blst.bench.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import {describe, bench} from "@chainsafe/benchmark";
2+
3+
import * as blst from "../src/blst.ts";
4+
import * as other from "@chainsafe/blst";
5+
6+
describe("blst", () => {
7+
const ikm = new Uint8Array(32);
8+
bench("blst - keygen", () => {
9+
blst.SecretKey.fromKeygen(ikm);
10+
});
11+
bench("other - keygen", () => {
12+
other.SecretKey.fromKeygen(ikm);
13+
});
14+
15+
bench({
16+
id: "blst - sign",
17+
beforeEach: () => {
18+
const sk = blst.SecretKey.fromKeygen(ikm);
19+
return {sk, msg: new Uint8Array(32)};
20+
},
21+
fn: ({sk, msg}) => {
22+
sk.sign(msg);
23+
},
24+
});
25+
bench({
26+
id: "other - sign",
27+
beforeEach: () => {
28+
const sk = other.SecretKey.fromKeygen(ikm);
29+
return {sk, msg: new Uint8Array(32)};
30+
},
31+
fn: ({sk, msg}) => {
32+
sk.sign(msg);
33+
},
34+
});
35+
36+
bench({
37+
id: "blst - verify",
38+
beforeEach: () => {
39+
const sk = blst.SecretKey.fromKeygen(ikm);
40+
const pk = sk.toPublicKey();
41+
const msg = new Uint8Array(32);
42+
const sig = sk.sign(msg);
43+
return {pk, msg, sig};
44+
},
45+
fn: ({pk, msg, sig}) => {
46+
sig.verify(msg, pk, true, true);
47+
},
48+
});
49+
bench({
50+
id: "other - verify",
51+
beforeEach: () => {
52+
const sk = other.SecretKey.fromKeygen(ikm);
53+
const pk = sk.toPublicKey();
54+
const msg = new Uint8Array(32);
55+
const sig = sk.sign(msg);
56+
return {pk, msg, sig};
57+
},
58+
fn: ({pk, msg, sig}) => {
59+
other.verify(msg, pk, sig, true, true);
60+
},
61+
});
62+
63+
bench({
64+
id: "blst - aggregateVerify 16",
65+
beforeEach: () => {
66+
const sks = [];
67+
const pks = [];
68+
const sigs = [];
69+
const msgs = [];
70+
for (let i = 0; i < 16; i++) {
71+
const sk = blst.SecretKey.fromKeygen(ikm);
72+
sks.push(sk);
73+
pks.push(sk.toPublicKey());
74+
const msg = new Uint8Array(32);
75+
msgs.push(msg);
76+
sigs.push(sk.sign(msg));
77+
}
78+
const aggSig = blst.aggregateSignatures(sigs, true);
79+
return {pks, msgs, aggSig};
80+
},
81+
fn: ({pks, msgs, aggSig}) => {
82+
aggSig.aggregateVerify(msgs, pks, true, true);
83+
},
84+
});
85+
bench({
86+
id: "other - aggregateVerify 16",
87+
beforeEach: () => {
88+
const sks = [];
89+
const pks = [];
90+
const sigs = [];
91+
const msgs = [];
92+
for (let i = 0; i < 16; i++) {
93+
const sk = other.SecretKey.fromKeygen(ikm);
94+
sks.push(sk);
95+
pks.push(sk.toPublicKey());
96+
const msg = new Uint8Array(32);
97+
msgs.push(msg);
98+
sigs.push(sk.sign(msg));
99+
}
100+
const aggSig = other.aggregateSignatures(sigs, true);
101+
return {pks, msgs, aggSig};
102+
},
103+
fn: ({pks, msgs, aggSig}) => {
104+
other.aggregateVerify(msgs, pks, aggSig, true, true);
105+
},
106+
});
107+
});

bun.lock

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"devDependencies": {
1010
"@chainsafe/as-sha256": "^1.2.0",
1111
"@chainsafe/benchmark": "^2.0.1",
12+
"@chainsafe/blst": "^2.2.0",
1213
"@chainsafe/hashtree": "^1.0.2",
1314
"@types/bun": "latest",
1415
"@types/snappyjs": "^0.7.1",
@@ -68,6 +69,23 @@
6869
"@chainsafe/benchmark": ["@chainsafe/[email protected]", "", { "dependencies": { "@actions/cache": "^4.0.0", "@actions/github": "^6.0.0", "@vitest/runner": "^2.1.8", "ajv": "^8.17.1", "aws-sdk": "^2.932.0", "cli-table3": "^0.6.5", "csv-parse": "^5.6.0", "csv-stringify": "^6.5.2", "debug": "^4.4.0", "glob": "^10.4.5", "log-symbols": "^7.0.0", "yaml": "^2.7.0", "yargs": "^17.7.2" }, "bin": { "benchmark": "bin/index.js" } }, "sha512-Noecu9z6kjXWdKl9ZL/PckJxfi+Ax4/8/i4F862jo3FZcViK8LWR5Byc8pKeNC5vcDMSP73/ME3vgUovYGqwUw=="],
6970

7071
"@chainsafe/bun-ffi-z": ["@chainsafe/[email protected]", "", { "peerDependencies": { "typescript": "^5" }, "bin": { "bun-ffi-z": "src/cli.ts" } }, "sha512-nmiRudOInH2JQk32FEyOq/VeBftKuHxP44TYd345xCdZKv2j4ajecM6IZ9SzTQTNozFqt7gCsnWINJXYikfRzw=="],
72+
"@chainsafe/blst": ["@chainsafe/[email protected]", "", { "optionalDependencies": { "@chainsafe/blst-darwin-arm64": "2.2.0", "@chainsafe/blst-darwin-x64": "2.2.0", "@chainsafe/blst-linux-arm64-gnu": "2.2.0", "@chainsafe/blst-linux-arm64-musl": "2.2.0", "@chainsafe/blst-linux-x64-gnu": "2.2.0", "@chainsafe/blst-linux-x64-musl": "2.2.0", "@chainsafe/blst-win32-x64-msvc": "2.2.0" } }, "sha512-VBaQoNE2a9d9+skAjQKv3Suk0yGKqp3mZM0YWYJNPj/Ae/f6lAyeVSgKqo2LrsNQBzD/LqrJLKUY8rJT3vDKLA=="],
73+
74+
"@chainsafe/blst-darwin-arm64": ["@chainsafe/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BOOy2KHbV028cioPWaAMqHdLRKd6/3XyEmUEcQC2E/SpyYLdNcaKiBUYIU4pT9CrWBbJJxX68UI+3vZVg0M8/w=="],
75+
76+
"@chainsafe/blst-darwin-x64": ["@chainsafe/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-jG64cwIdPT7u/haRrW26tWCpfMfHBQCfGY169mFQifCwO4VEwvaiVBPOh5olFis6LjpcmD+O0jpM8GqrnsmUHQ=="],
77+
78+
"@chainsafe/blst-linux-arm64-gnu": ["@chainsafe/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-L8xV2uuLn8we76vdzfryS9ePdheuZrmY6yArGUFaF1Uzcwml6V1/VvyPl9/uooo/YfVRIrvF/D+lQfI2GFAnhw=="],
79+
80+
"@chainsafe/blst-linux-arm64-musl": ["@chainsafe/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-0Vn0luxLYVgC3lvWT1MapFHSAoz99PldqjhilXTGv0AcAk/X5LXPH2RC9Dp2KJGqthyUkpbk1j47jUBfBI+BIg=="],
81+
82+
"@chainsafe/blst-linux-x64-gnu": ["@chainsafe/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-gEY/z2SDBA7kXtFEI9VNhWTJAIjx16jdeAyCaS2k4ACGurWZaWk+Ee4KniTsr4WieSqeuNTUr7Pdja0Sr4EKNQ=="],
83+
84+
"@chainsafe/blst-linux-x64-musl": ["@chainsafe/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-58GKtiUmtVSuerRzPEcMNQZpICPboBKFnL7+1Wo+PSuajkvbae7tEFrFTtWeMoKIPgOEsPMnk96LF+0yNgavUg=="],
85+
86+
"@chainsafe/blst-win32-x64-msvc": ["@chainsafe/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-UFrZshl4dfX5Uh2zeKXAZtrkQ+otczHMON2tsrapQNICWmfHZrzE6pKuBL+9QeGAbgflwpbz7+D5nQRDpiuHxQ=="],
87+
88+
"@chainsafe/bun-ffi-z": ["@chainsafe/[email protected]", "", { "peerDependencies": { "typescript": "^5" }, "bin": { "bun-ffi-z": "src/cli.ts" } }, "sha512-yegYWjcj9pMwrf554iuFGoUc+Kq8EWDrVpeGiPl/nmXu/lm5EaUzxsiLG6WR1J9tpTQk012213y9RA5PwDrUTQ=="],
7189

7290
"@chainsafe/hashtree": ["@chainsafe/[email protected]", "", { "optionalDependencies": { "@chainsafe/hashtree-darwin-arm64": "1.0.2", "@chainsafe/hashtree-linux-arm64-gnu": "1.0.2", "@chainsafe/hashtree-linux-arm64-musl": "1.0.2", "@chainsafe/hashtree-linux-x64-gnu": "1.0.2", "@chainsafe/hashtree-linux-x64-musl": "1.0.2", "@chainsafe/hashtree-win32-x64-msvc": "1.0.2" } }, "sha512-OaWjsZ6S/GaT2RvaqdpsF5Mux8qQOE2KbitX2yHmQJZNUZkdh7C3N4PA5LsvewqX+z8Nkv8mr1uSe0LSrHGiQw=="],
7391

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"devDependencies": {
1616
"@chainsafe/as-sha256": "^1.2.0",
1717
"@chainsafe/benchmark": "^2.0.1",
18+
"@chainsafe/blst": "^2.2.0",
1819
"@chainsafe/hashtree": "^1.0.2",
1920
"@types/bun": "latest",
2021
"@types/snappyjs": "^0.7.1",

0 commit comments

Comments
 (0)