logos-storage-nim/tests/codex/utils/testPoseidon.nim
munna0908 0c1b6822cc
test
2025-07-10 18:56:42 +05:30

41 lines
1.1 KiB
Nim

{.push raises: [].}
import std/[times, strformat, random]
import pkg/questionable/results
import pkg/codex/merkletree/poseidon2
import pkg/codex/utils/poseidon2digest
import ../../asynctest
test "Test poseidon2 digestTree":
randomize(42)
const
dataSize = 64 * 1024 # 64KB
chunkSize = 2 * 1024 # 2KB
iterations = 10 # Number of iterations
echo &"Benchmarking digestTree with data size: {dataSize} bytes, chunk size: {chunkSize} bytes"
# Generate random data
var data = newSeq[byte](dataSize)
for i in 0 ..< dataSize:
data[i] = byte(rand(255))
# Actual benchmark
let startTime = cpuTime()
for i in 1 .. iterations:
let treeResult = Poseidon2Tree.digestTree(data, chunkSize).tryGet()
# Optionally print info about each iteration
let endTime = cpuTime()
let totalTime = endTime - startTime
let avgTime = totalTime / iterations.float
echo &"Results:"
echo &" Total time for {iterations} iterations: {totalTime:.6f} seconds"
echo &" Average time per iteration: {avgTime:.6f} seconds"
echo &" Iterations per second: {iterations.float / totalTime:.2f}"