Split printing results into separate function

This commit is contained in:
Les De Ridder 2019-07-09 23:59:30 +02:00
parent 39a1a56724
commit a28db7bc32
1 changed files with 14 additions and 5 deletions

View File

@ -1,5 +1,7 @@
import util : make, rcarray, StdArray, StdxArray, EMSIArray; import util : make, rcarray, StdArray, StdxArray, EMSIArray;
import std.stdio : stderr, writeln; import std.stdio : stderr, writeln;
import std.datetime : Duration;
void testInsert(Container, int times = 100)() void testInsert(Container, int times = 100)()
{ {
@ -53,9 +55,8 @@ void testConcat(Container, int times = 100)()
import std.meta : AliasSeq; import std.meta : AliasSeq;
alias tests = AliasSeq!(testInsert, testInsertDelete, testConcat); alias tests = AliasSeq!(testInsert, testInsertDelete, testConcat);
void testContainers(Containers...)(int times = 100000) auto testContainers(Containers...)(int times = 100000)
{ {
import std.datetime : Duration;
import std.datetime.stopwatch : benchmark; import std.datetime.stopwatch : benchmark;
import std.meta : staticMap; import std.meta : staticMap;
@ -66,6 +67,11 @@ void testContainers(Containers...)(int times = 100000)
results[test.stringof] = benchmark!(staticMap!(test, Containers))(times); results[test.stringof] = benchmark!(staticMap!(test, Containers))(times);
} }
return results;
}
void printResults(Containers...)(Duration[][string] results)
{
static foreach (test; tests) static foreach (test; tests)
{ {
import std.stdio : writeln; import std.stdio : writeln;
@ -80,7 +86,10 @@ void testContainers(Containers...)(int times = 100000)
void main() void main()
{ {
import std.meta : AliasSeq, staticMap; import std.meta : AliasSeq;
alias tests = AliasSeq!(testInsert, testInsertDelete);
testContainers!(int[], StdArray!int, StdxArray!int, EMSIArray!int, rcarray!int); alias containers = AliasSeq!(int[], StdArray!int, StdxArray!int, EMSIArray!int, rcarray!int);
auto results = testContainers!containers;
results.printResults!containers;
} }