aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-04-25 19:48:54 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-04-25 21:32:43 -0700
commitd239ec265a345fdfdc2f12d9ffa149bfd15ca4e9 (patch)
tree14f270c362936f071359b00418a21d3090803167
parent46630aa446c6e984c5e3c745bf36cb7fa555c309 (diff)
standardize benchmark inputs
-rw-r--r--tests/box2d/Benchmark.cpp15
-rw-r--r--tests/bullet/Demos/Benchmarks/main.cpp14
-rw-r--r--tests/fannkuch.cpp4
-rw-r--r--tests/life.c19
-rwxr-xr-xtests/runner.py165
-rw-r--r--tests/skinning_test_no_simd.cpp11
-rw-r--r--tests/zlib/benchmark.c12
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;