import std/sequtils import std/strformat import pkg/dagger/leopard import pkg/dagger/rng import pkg/stew/byteutils import pkg/stew/ptrops import pkg/libp2p/varint const LEO_ALIGN_BYTES = 16'u type TestParameters = object originalCount: cuint recoveryCount: cuint bufferBytes : cuint lossCount : cuint seed : cuint proc randomCRCPacket(rng: Rng, data: var openArray[byte]) = if data.len < 16: data[0] = rng.rand(data.len).byte for i in 1..= LEO_ALIGN_BYTES: return data = cast[pointer](cast[uint](data) - (LEO_ALIGN_BYTES - offset)) dealloc(data) proc benchmark(params: TestParameters) = let rng = Rng.instance() encodeWorkCount = leoEncodeWorkCount( params.originalCount, params.recoveryCount) decodeWorkCount = leoDecodeWorkCount( params.originalCount, params.recoveryCount) debugEcho "original work count: " & $params.originalCount debugEcho "encode work count: " & $encodeWorkCount debugEcho "decode work count: " & $decodeWorkCount let totalBytes = (params.buffer_bytes * params.originalCount).uint64 debugEcho "total_bytes: " & $totalBytes var originalData = newSeq[pointer](params.originalCount) encodeWorkData = newSeq[pointer](encodeWorkCount) decodeWorkData = newSeq[pointer](decodeWorkCount) for i in 0..