logos-storage-nim/tests/codex/utils/testPoseidon.nim
Jacek Sieka cce002fcbf
feat: async tree building v2 (#1360)
Signed-off-by: Giuliano Mega <giuliano.mega@gmail.com>
Co-authored-by: munna0908 <munnasitu0908@gmail.com>
Co-authored-by: gmega <giuliano.mega@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-15 18:13:14 +00:00

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}"