Separated tests and benchmark
This commit is contained in:
parent
f979af98d3
commit
71fa891f9e
|
@ -0,0 +1,184 @@
|
|||
import times
|
||||
import stats
|
||||
import random
|
||||
import strformat
|
||||
|
||||
import ../src/nimdeque
|
||||
|
||||
|
||||
when isMainModule:
|
||||
const benchSize = 500000
|
||||
echo &"\nRunning benchmarks with queue size of {benchSize} against a seq"
|
||||
var q = newLinkedDeque[int]()
|
||||
var q2: seq[int] = @[]
|
||||
var t: seq[float] = @[]
|
||||
var tmp: float
|
||||
var st: RunningStat
|
||||
var benchStart = cpuTime()
|
||||
var start = cpuTime()
|
||||
|
||||
echo &" Benchmarking LinkedDeque.add()"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q.add(i)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.add()"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q2.add(i)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking LinkedDeque.pop(0)"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
discard q.pop()
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.delete(0)"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q2.delete(0)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
q2 = @[]
|
||||
echo &" Benchmarking LinkedDeque.addLeft()"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q.addLeft(i)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.insert(0)"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q2.insert(i, 0)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo " Benchmarking random access for LinkedDeque (10000 times)"
|
||||
for i in countup(0, 10000):
|
||||
tmp = cpuTime()
|
||||
discard q[rand(benchSize - 1)]
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo " Benchmarking random access for seq (10000 times)"
|
||||
for i in countup(0, 10000):
|
||||
tmp = cpuTime()
|
||||
discard q2[rand(benchSize - 1)]
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking LinkedDeque.pop(^1)"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
discard q.pop(^1)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.pop()"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
discard q2.pop()
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
q2 = @[]
|
||||
|
||||
echo &"\nTotal benchmark time: {cpuTime() - benchStart}"
|
177
tests/linked.nim
177
tests/linked.nim
|
@ -159,180 +159,3 @@ when isMainModule:
|
|||
doAssert deque.find(size) == -1
|
||||
doAssert deque.find(size div 2) == size div 2
|
||||
echo &"Tests completed in {cpuTime() - testStart} seconds"
|
||||
|
||||
## End of tests, start of benchmark
|
||||
echo &"\nRunning benchmarks with queue size of {benchSize} against a seq"
|
||||
var q = newLinkedDeque[int]()
|
||||
var q2: seq[int] = @[]
|
||||
var t: seq[float] = @[]
|
||||
var tmp: float
|
||||
var st: RunningStat
|
||||
var benchStart = cpuTime()
|
||||
var start = cpuTime()
|
||||
|
||||
echo &" Benchmarking LinkedDeque.add()"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q.add(i)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.add()"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q2.add(i)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking LinkedDeque.pop(0)"
|
||||
for i in countup(0, size * 10 - 1):
|
||||
tmp = cpuTime()
|
||||
discard q.pop()
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.delete(0)"
|
||||
for i in countup(0, size * 10 - 1):
|
||||
tmp = cpuTime()
|
||||
q2.delete(0)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
q2 = @[]
|
||||
echo &" Benchmarking LinkedDeque.addLeft()"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q.addLeft(i)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.insert(0)"
|
||||
for i in countup(0, benchSize - 1):
|
||||
tmp = cpuTime()
|
||||
q2.insert(i, 0)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo " Benchmarking random access for LinkedDeque (10000 times)"
|
||||
for i in countup(0, 10000):
|
||||
tmp = cpuTime()
|
||||
discard q[rand(benchSize - 1)]
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo " Benchmarking random access for seq (10000 times)"
|
||||
for i in countup(0, 10000):
|
||||
tmp = cpuTime()
|
||||
discard q2[rand(benchSize - 1)]
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking LinkedDeque.pop(^1)"
|
||||
for i in countup(0, size * 10 - 1):
|
||||
tmp = cpuTime()
|
||||
discard q.pop(^1)
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
echo &" Benchmarking seq.pop()"
|
||||
for i in countup(0, size * 10 - 1):
|
||||
tmp = cpuTime()
|
||||
discard q2.pop()
|
||||
t.add(cpuTime() - tmp)
|
||||
st.push(t)
|
||||
echo &"""
|
||||
- Done in {cpuTime() - start} seconds. Results (in seconds):
|
||||
- min: {st.min}
|
||||
- max: {st.max}
|
||||
- avg: {st.mean()}
|
||||
- stdev: {st.standardDeviation()}"""
|
||||
|
||||
st.clear()
|
||||
t = @[]
|
||||
start = cpuTime()
|
||||
q2 = @[]
|
||||
|
||||
echo &"\nTotal benchmark time: {cpuTime() - benchStart}"
|
||||
echo &"Total execution time: {cpuTime() - testStart}"
|
Loading…
Reference in New Issue