diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-04-25 19:48:54 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-04-25 21:32:43 -0700 |
commit | d239ec265a345fdfdc2f12d9ffa149bfd15ca4e9 (patch) | |
tree | 14f270c362936f071359b00418a21d3090803167 | |
parent | 46630aa446c6e984c5e3c745bf36cb7fa555c309 (diff) |
standardize benchmark inputs
-rw-r--r-- | tests/box2d/Benchmark.cpp | 15 | ||||
-rw-r--r-- | tests/bullet/Demos/Benchmarks/main.cpp | 14 | ||||
-rw-r--r-- | tests/fannkuch.cpp | 4 | ||||
-rw-r--r-- | tests/life.c | 19 | ||||
-rwxr-xr-x | tests/runner.py | 165 | ||||
-rw-r--r-- | tests/skinning_test_no_simd.cpp | 11 | ||||
-rw-r--r-- | tests/zlib/benchmark.c | 12 |
7 files changed, 168 insertions, 72 deletions
diff --git a/tests/box2d/Benchmark.cpp b/tests/box2d/Benchmark.cpp index 8ebf0457..b8ebdf1c 100644 --- a/tests/box2d/Benchmark.cpp +++ b/tests/box2d/Benchmark.cpp @@ -10,8 +10,8 @@ // Turn this on to include the y-position of the top box in the output. #define DEBUG 0 -#define WARMUP 64 -#define FRAMES 333 +int WARMUP; +int FRAMES; typedef struct { float mean; @@ -52,7 +52,16 @@ result_t measure(clock_t times[FRAMES]) { return r; } -int main() { +int main(int argc, char **argv) { + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: WARMUP = 32; FRAMES = 161; break; + case 1: WARMUP = 64; FRAMES = 333; break; + case 2: WARMUP = 5*64; FRAMES = 7*333; break; + case 3: WARMUP = 10*64; FRAMES = 17*333; break; + default: printf("error: %d\\n", arg); return -1; + } + // Define the gravity vector. b2Vec2 gravity(0.0f, -10.0f); diff --git a/tests/bullet/Demos/Benchmarks/main.cpp b/tests/bullet/Demos/Benchmarks/main.cpp index c92ef5e0..1d7b6a2a 100644 --- a/tests/bullet/Demos/Benchmarks/main.cpp +++ b/tests/bullet/Demos/Benchmarks/main.cpp @@ -27,12 +27,20 @@ subject to the following restrictions: #define NUM_DEMOS 7 -#define NUM_TESTS 200 extern bool gDisableDeactivation; -int main(int argc,char** argv) -{ +int main(int argc, char **argv) { + int NUM_TESTS; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: NUM_TESTS = 7; break; + case 1: NUM_TESTS = 33; break; + case 2: NUM_TESTS = 5*33; break; + case 3: NUM_TESTS = 7*35; break; + default: printf("error: %d\\n", arg); return -1; + } + gDisableDeactivation = true; BenchmarkDemo1 benchmarkDemo1; diff --git a/tests/fannkuch.cpp b/tests/fannkuch.cpp index c2fcfaa2..f615ba2f 100644 --- a/tests/fannkuch.cpp +++ b/tests/fannkuch.cpp @@ -145,9 +145,9 @@ fannkuch(int n) } int -main(int ac, char **av) +main(int argc, char **argv) { - int n = ac > 1 ? atoi(av[1]) : 0; + int n = argc > 1 ? atoi(argv[1]) : 0; if (n < 1) { printf("Wrong argument.\n"); diff --git a/tests/life.c b/tests/life.c index 08742f64..5f902cf1 100644 --- a/tests/life.c +++ b/tests/life.c @@ -74,14 +74,19 @@ void game(int w, int h, int i) show(univ, w, h); } -int main(int c, char **v) +int main(int argc, char **argv) { - int w = 0, h = 0, i = -1; // i = -1 means run forever, normal. otherwise, run in benchmark mode - if (c > 1) w = atoi(v[1]); - if (c > 2) h = atoi(v[2]); - if (c > 3) i = atoi(v[3]); - if (w <= 0) w = 32; - if (h <= 0) h = 32; + int w, h, i; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: w = h = 32; i = 13000; break; + case 1: w = h = 32; i = 24000; break; + case 2: w = h = 32; i = 5*24000; break; + case 3: w = h = 32; i = 10*24000; break; + default: printf("error: %d\\n", arg); return -1; + } + + printf("life: %d,%d,%d,%d\n", arg, w, h, i); game(w, h, i); } diff --git a/tests/runner.py b/tests/runner.py index 8168f332..c8580923 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -12389,12 +12389,21 @@ elif 'benchmark' in str(sys.argv): # self.print_stats(total_times, total_native_times, last=True) def test_primes(self): - src = ''' + src = r''' #include<stdio.h> #include<math.h> - int main() { + int main(int argc, char **argv) { + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: arg = 130000; break; + case 1: arg = 220000; break; + case 2: arg = 610000; break; + case 3: arg = 1010000; break; + default: printf("error: %d\\n", arg); return -1; + } + int primes = 0, curri = 2; - while (primes < 220000) { + while (primes < arg) { int ok = true; for (int j = 2; j < sqrtf(curri); j++) { if (curri % j == 0) { @@ -12407,7 +12416,7 @@ elif 'benchmark' in str(sys.argv): } curri++; } - printf("lastprime: %d.\\n", curri-1); + printf("lastprime: %d.\n", curri-1); return 0; } ''' @@ -12418,9 +12427,17 @@ elif 'benchmark' in str(sys.argv): #include<stdio.h> #include<string.h> #include<stdlib.h> - int main() { - int N = 1024*1024; - int M = 800; + int main(int argc, char **argv) { + int N, M; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: N = 1024*1024; M = 400; break; + case 1: N = 1024*1024; M = 800; break; + case 2: N = 1024*1024; M = 4000; break; + case 3: N = 1024*1024; M = 8000; break; + default: printf("error: %d\\n", arg); return -1; + } + int final = 0; char *buf = (char*)malloc(N); for (int t = 0; t < M; t++) { @@ -12499,9 +12516,18 @@ elif 'benchmark' in str(sys.argv): } int sum() { return x + y + z + r + g + b; } }; - int main() { + int main(int argc, char **argv) { + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: arg = 625; break; + case 1: arg = 1250; break; + case 2: arg = 5*1250; break; + case 3: arg = 10*1250; break; + default: printf("error: %d\\n", arg); return -1; + } + int total = 0; - for (int i = 0; i < 1250; i++) { + for (int i = 0; i < arg; i++) { for (int j = 0; j < 50000; j++) { vec c(i, i+i%10, j*2, i%255, j%120, i%15); vec d(j+i%10, j*2, j%255, i%120, j%15, j); @@ -12520,19 +12546,41 @@ elif 'benchmark' in str(sys.argv): return 0; } ''' - self.do_benchmark('copy', src, [], 'sum:2836\n', emcc_args=['-s', 'QUANTUM_SIZE=4', '-s', 'USE_TYPED_ARRAYS=2']) + self.do_benchmark('copy', src, [], 'sum:2836\n') def test_fannkuch(self): - src = open(path_from_root('tests', 'fannkuch.cpp'), 'r').read() + src = open(path_from_root('tests', 'fannkuch.cpp'), 'r').read().replace( + 'int n = argc > 1 ? atoi(argv[1]) : 0;', + ''' + int n; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: n = 10; break; + case 1: n = 11; break; + case 2: n = 11; break; + case 3: n = 12; break; + default: printf("error: %d\\n", arg); return -1; + } + ''' + ) + assert 'switch(arg)' in src self.do_benchmark('fannkuch', src, ['11'], 'Pfannkuchen(11) = 51.') def test_corrections(self): src = r''' #include<stdio.h> #include<math.h> - int main() { - int N = 20000; - int M = 7000; + int main(int argc, char **argv) { + int N, M; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: N = 20000; M = 3500; break; + case 1: N = 20000; M = 7000; break; + case 2: N = 20000; M = 5*7000; break; + case 3: N = 20000; M = 10*7000; break; + default: printf("error: %d\\n", arg); return -1; + } + unsigned int f = 0; unsigned short s = 0; for (int t = 0; t < M; t++) { @@ -12551,7 +12599,19 @@ elif 'benchmark' in str(sys.argv): def fasta(self, double_rep): src = open(path_from_root('tests', 'fasta.cpp'), 'r').read().replace('double', double_rep) - self.do_benchmark('fasta', src, ['19000000'], '''GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\nTCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\nAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\nGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\nCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\nGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\nGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\nTTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\nAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\nGCCTGGGCGA''') + src = src.replace(' const size_t n = ( argc > 1 ) ? atoi( argv[1] ) : 512;', ''' + int n; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: n = 19000000/2; break; + case 1: n = 19000000; break; + case 2: n = 19000000*5; break; + case 3: n = 19000000*10; break; + default: printf("error: %d\\n", arg); return -1; + } + ''') + assert 'switch(arg)' in src + self.do_benchmark('fasta', src, [], '''GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\nTCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\nAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\nGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\nCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\nGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\nGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\nTTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\nAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\nGCCTGGGCGA''') def test_fasta_float(self): self.fasta('float') @@ -12561,45 +12621,44 @@ elif 'benchmark' in str(sys.argv): def test_skinning(self): src = open(path_from_root('tests', 'skinning_test_no_simd.cpp'), 'r').read() - self.do_benchmark('skinning', src, ['9500', '10000'], 'blah=0.000000') + self.do_benchmark('skinning', src, [], 'blah=0.000000') def test_life(self): src = open(path_from_root('tests', 'life.c'), 'r').read() - self.do_benchmark('life', src, ['32', '32', '15000'], '''-------------------------------- - [] [][][] [] [] [][] - [] [][] [] [] [] [] - [] [][] [][] [] - [] [] [] [] - [] [] [] [] [] [] [] [] - [][][][] [] [][] [][] - [] - [] - [] [] - [][] [] [] - [][] [][][] - [] - - [] - [] [] - [][] - [] [] [][] [][] - [] [] [] [] - [][] [] - [][][][] - - [][][] [][] - [][][] [][] - [] - [] - [] [][][] [] - [] [] - [][] [] - [][][] - [][][] [][] - [][][][][] [] [][] - [] [][] [] [] --------------------------------- -''', shared_args=['-std=c99'], force_c=True) + self.do_benchmark('life', src, [], '''-------------------------------- + [][] [] [] + [][] [][] [] [] + [][] [] [] + [][] [] [] + [] [][] [] + [][] [] [] [] [] + [][] [] [] [] [] + [] [][] [] + [][] [][] + [][] [][] [] [] + [][] [][] [][] [] + [][] [] + [] + [] + [] [] +[] [][][] [] [] + [] [][][][][][] [] [][] + [] [][] [] [] [][] [] [] +[] [] [][] [] [] + [][] [] [][][] [][] + [] [] [][][] + [][] [][][][] + [][] [][] [] + [] [][] [] + [][] + [][] [] + [] [][][][][] +[][][] [][] + [][] [] [][][] + [] [] [][] + [] + [] [][] [][][] +--------------------------------''', shared_args=['-std=c99'], force_c=True) def test_zlib(self): src = open(path_from_root('tests', 'zlib', 'benchmark.c'), 'r').read() @@ -12607,7 +12666,7 @@ elif 'benchmark' in str(sys.argv): ['-I' + path_from_root('tests', 'zlib')] native_args = self.get_library('zlib_native', os.path.join('libz.a'), make_args=['libz.a'], native=True) + \ ['-I' + path_from_root('tests', 'zlib')] - self.do_benchmark('zlib', src, ['100000', '500'], '''sizes: 100000,25906 + self.do_benchmark('zlib', src, [], '''sizes: 100000,25906 ok. ''', force_c=True, emcc_args=emcc_args, native_args=native_args) @@ -12643,7 +12702,7 @@ ok. native_args = native_lib + ['-I' + path_from_root('tests', 'bullet', 'src'), '-I' + path_from_root('tests', 'bullet', 'Demos', 'Benchmarks')] - self.do_benchmark('bullet', src, [], '\nok.\n', emcc_args=emcc_args, native_args=native_args, reps=1) + self.do_benchmark('bullet', src, [], '\nok.\n', emcc_args=emcc_args, native_args=native_args) elif 'sanity' in str(sys.argv): diff --git a/tests/skinning_test_no_simd.cpp b/tests/skinning_test_no_simd.cpp index 1df6e44c..34a82d6d 100644 --- a/tests/skinning_test_no_simd.cpp +++ b/tests/skinning_test_no_simd.cpp @@ -171,8 +171,15 @@ void calculateVerticesAndNormals_x87( int main (int argc, char*argv[]) { - const int N=atoi(argv[1]); - const int M=atoi(argv[2]); + int N, M; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: N = 6600; M = 6500; break; + case 1: N = 9500; M = 10000; break; + case 2: N = 2*11000; M = 2*12000; break; + case 3: N = 3*10000; M = 3*10800; break; + default: printf("error: %d\\n", arg); return -1; + } Vertex *v = new Vertex[N]; Influence *i = new Influence[N]; diff --git a/tests/zlib/benchmark.c b/tests/zlib/benchmark.c index 9ad872e1..db1ca7d4 100644 --- a/tests/zlib/benchmark.c +++ b/tests/zlib/benchmark.c @@ -26,8 +26,16 @@ void __attribute__ ((noinline)) doit(char *buffer, int size, int i) { } int main(int argc, char **argv) { - int size = atoi(argv[1]); - int iters = atoi(argv[2]); + int size, iters; + int arg = argc > 1 ? argv[1][0] - '0' : 1; + switch(arg) { + case 0: size = 100000; iters = 250; break; + case 1: size = 100000; iters = 500; break; + case 2: size = 100000; iters = 5*500; break; + case 3: size = 100000; iters = 10*500; break; + default: printf("error: %d\\n", arg); return -1; + } + char *buffer = malloc(size); int i = 0; |