nwaku/apps/benchmarks/benchmarks.nim

48 lines
1.3 KiB
Nim

import
math,
std/sequtils,
stew/results,
options,
../../waku/waku_rln_relay/protocol_types,
../../waku/waku_rln_relay/rln,
../../waku/waku_rln_relay,
../../waku/waku_rln_relay/conversion_utils,
../../waku/waku_rln_relay/group_manager/static/group_manager
import std/[times, os]
proc main(): Future[string] {.async, gcsafe.} =
let rlnIns = createRLNInstance(20).get()
let credentials = toSeq(0 .. 1000).mapIt(membershipKeyGen(rlnIns).get())
let manager = StaticGroupManager(
rlnInstance: rlnIns,
groupSize: 1000,
membershipIndex: some(MembershipIndex(900)),
groupKeys: credentials,
)
await manager.init()
let data: seq[byte] = newSeq[byte](1024)
var proofGenTimes: seq[times.Duration] = @[]
var proofVerTimes: seq[times.Duration] = @[]
for i in 0 .. 50:
var time = getTime()
let proof = manager.generateProof(data, default(Epoch)).get()
proofGenTimes.add(getTime() - time)
time = getTime()
let res = manager.verifyProof(data, proof).get()
proofVerTimes.add(getTime() - time)
echo "Proof generation times: ", sum(proofGenTimes) div len(proofGenTimes)
echo "Proof verification times: ", sum(proofVerTimes) div len(proofVerTimes)
when isMainModule:
try:
waitFor(main())
except CatchableError as e:
raise e