Present results as a table
This commit is contained in:
parent
a207c23f3e
commit
e356bd1b37
23
README.md
23
README.md
|
@ -91,19 +91,16 @@ The API is identical for all implementations.
|
|||
- `herumi`: [src/herumi](src/herumi)
|
||||
- `noble`: [noble-bls12-381](https://github.com/paulmillr/noble-bls12-381)
|
||||
|
||||
```
|
||||
blst verify: 502.72 ops/sec (100 runs)
|
||||
blst verifyAgg: 489.60 ops/sec (100 runs)
|
||||
blst aggPubkey: 8326.6 ops/sec (100 runs)
|
||||
blst aggSigs: 6968.3 ops/sec (100 runs)
|
||||
herumi verify: 53.792 ops/sec (100 runs)
|
||||
herumi verifyAgg: 52.897 ops/sec (100 runs)
|
||||
herumi aggPubkey: 3020.1 ops/sec (100 runs)
|
||||
herumi aggSigs: 1151.2 ops/sec (100 runs)
|
||||
noble verify: 13.868 ops/sec (10 runs)
|
||||
noble verifyAgg: 11.241 ops/sec (10 runs)
|
||||
noble aggPubkey: 47.309 ops/sec (10 runs)
|
||||
```
|
||||
Results are in `ops/sec`. `blst` and `herumi` performed 100 runs each, `noble` 10 runs.
|
||||
|
||||
| Function - `ops/sec` | `blst` | `herumi` | `noble`\* |
|
||||
| ------------------------- | :----: | :------: | :-------: |
|
||||
| `verify` | 502.72 | 53.792 | 13.868 |
|
||||
| `verifyAggregate` (30) | 489.60 | 52.897 | 11.241 |
|
||||
| `aggregate` (pubkeys, 30) | 8326.6 | 3020.1 | 47.309 |
|
||||
| `aggregate` (sigs, 30) | 6968.3 | 1151.2 | - |
|
||||
|
||||
\*`noble` methods include serialization and deserialization to bytes, which may impact the `aggregate` benchmark
|
||||
|
||||
Results from CI run https://github.com/ChainSafe/bls/runs/1478915060
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@ import {runBenchmark} from "./runner";
|
|||
import {runForAllImplementations} from "../test/switch";
|
||||
import {PublicKey, Signature} from "../src/interface";
|
||||
import {range, randomMessage} from "../test/util";
|
||||
|
||||
const aggCount = 30;
|
||||
import {aggCount, runs} from "./params";
|
||||
|
||||
(async function () {
|
||||
await runForAllImplementations(async (bls, implementation) => {
|
||||
|
@ -25,12 +24,13 @@ const aggCount = 30;
|
|||
testRunner: ({pk, msg, sig}) => {
|
||||
return sig.verify(pk, msg);
|
||||
},
|
||||
runs,
|
||||
});
|
||||
|
||||
// Fast aggregate
|
||||
|
||||
await runBenchmark<{pks: PublicKey[]; msg: Uint8Array; sig: Signature}, boolean>({
|
||||
id: `${implementation} verifyAggregate`,
|
||||
id: `${implementation} verifyAggregate (${aggCount})`,
|
||||
|
||||
prepareTest: () => {
|
||||
const msg = randomMessage();
|
||||
|
@ -52,6 +52,7 @@ const aggCount = 30;
|
|||
testRunner: ({pks, msg, sig}) => {
|
||||
return sig.verifyAggregate(pks, msg);
|
||||
},
|
||||
runs,
|
||||
});
|
||||
|
||||
// Aggregate pubkeys
|
||||
|
@ -67,6 +68,7 @@ const aggCount = 30;
|
|||
testRunner: (pks) => {
|
||||
bls.PublicKey.aggregate(pks);
|
||||
},
|
||||
runs,
|
||||
});
|
||||
|
||||
// Aggregate sigs
|
||||
|
@ -87,6 +89,7 @@ const aggCount = 30;
|
|||
testRunner: (sigs) => {
|
||||
bls.Signature.aggregate(sigs);
|
||||
},
|
||||
runs,
|
||||
});
|
||||
});
|
||||
})();
|
||||
|
|
|
@ -2,9 +2,7 @@ import {runBenchmark} from "./runner";
|
|||
import {range, randomMessage} from "../test/util";
|
||||
import {generateRandomSecretKey} from "@chainsafe/bls-keygen";
|
||||
import * as noble from "noble-bls12-381";
|
||||
|
||||
const aggCount = 30;
|
||||
const nobleRuns = 10;
|
||||
import {aggCount, runsNoble} from "./params";
|
||||
|
||||
(async function () {
|
||||
// verify
|
||||
|
@ -26,13 +24,13 @@ const nobleRuns = 10;
|
|||
testRunner: async ({pk, msg, sig}) => {
|
||||
return await noble.verify(sig, msg, pk);
|
||||
},
|
||||
runs: nobleRuns,
|
||||
runs: runsNoble,
|
||||
});
|
||||
|
||||
// Fast aggregate
|
||||
|
||||
await runBenchmark<{pks: Uint8Array[]; msg: Uint8Array; sig: Uint8Array}, boolean>({
|
||||
id: `noble verifyAggregate`,
|
||||
id: `noble verifyAggregate (${aggCount})`,
|
||||
|
||||
prepareTest: async () => {
|
||||
const msg = randomMessage();
|
||||
|
@ -57,7 +55,7 @@ const nobleRuns = 10;
|
|||
const pk = noble.aggregatePublicKeys(pks);
|
||||
return await noble.verify(sig, msg, pk);
|
||||
},
|
||||
runs: nobleRuns,
|
||||
runs: runsNoble,
|
||||
});
|
||||
|
||||
// Aggregate pubkeys
|
||||
|
@ -73,6 +71,6 @@ const nobleRuns = 10;
|
|||
testRunner: async (pks) => {
|
||||
noble.aggregatePublicKeys(pks);
|
||||
},
|
||||
runs: nobleRuns,
|
||||
runs: runsNoble,
|
||||
});
|
||||
})();
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
export const aggCount = 30;
|
||||
export const runs = 100;
|
||||
export const runsNoble = 10;
|
Reference in New Issue