Browse Source

Starting benchmarks test enhancement

Yann Weber 2 years ago
parent
commit
efc67909fd
1 changed files with 31 additions and 7 deletions
  1. 31
    7
      tests/benchmark.py

+ 31
- 7
tests/benchmark.py View File

@@ -5,6 +5,9 @@ import random
5 5
 import time
6 6
 import warnings
7 7
 
8
+def usage():
9
+    print("Usage : %s [expr_count [max_iter [argc [sz]]]]" %sys.argv[0],
10
+          file=sys.stderr)
8 11
 
9 12
 try:
10 13
     import pyrpn
@@ -13,14 +16,31 @@ except (ImportError, NameError) as e:
13 16
           file=sys.stderr)
14 17
     raise e
15 18
 
19
+if len(sys.argv) > 5:
20
+    usage()
21
+    exit(1)
22
+
16 23
 #expr_count = 0x200
17 24
 #max_iter = 0x3000
18 25
 #argc = 2
19 26
 #sz = 0x20
20
-expr_count = 5000
27
+expr_count = 0x200
21 28
 max_iter = 0x5000
22
-argc = 2
23
-sz = 0x30
29
+#argc = 2
30
+#sz = 0x30
31
+argc = 5
32
+sz = 0x50
33
+
34
+try:
35
+    expr_count = int(sys.argv[1], base=0)
36
+    max_iter = int(sys.argv[2], base=0)
37
+    argc = int(sys.argv[3], base=0)
38
+    sz = int(sys.argv[4], base=0)
39
+except IndexError:
40
+    pass
41
+except Exception:
42
+    usage()
43
+    exit(2)
24 44
 
25 45
 try:
26 46
     from tqdm import tqdm
@@ -48,9 +68,9 @@ start = time.time()
48 68
 IMAX = (1<<63)-1
49 69
 samples = 8
50 70
 
51
-print("Running %dK iter on %d expressions with %d op" % (max_iter//1000,
71
+print("Running %dK iter on %d expressions with %d op and %d args" % (max_iter//1000,
52 72
                                                          expr_count,
53
-                                                         sz))
73
+                                                         sz, argc))
54 74
 
55 75
 rnd_samples = [[[random.randint(0, IMAX) for _ in range(argc)] for _ in range(max_iter)]
56 76
                for _ in range(samples)]
@@ -58,6 +78,7 @@ for i in tqr(expr_count):
58 78
     rnd_expr = pyrpn.random_expr(argc, sz)
59 79
     all_start = time.time()
60 80
     expr = pyrpn.RPNExpr(rnd_expr, argc)
81
+    expr.eval(*[0 for _ in range(argc)])
61 82
     start_op = time.time()
62 83
     rnds = random.choice(rnd_samples)
63 84
     for rnd in rnds:
@@ -72,7 +93,10 @@ if write:
72 93
 total = time.time() - start
73 94
 print("Runned %dK iter on %d expressions in %.2fs" % (max_iter//1000,
74 95
                                                      expr_count, total))
75
-msg = "%.1fK iter/s %.1fms per expr (%dK iter, %d op per expr)"
76
-msg %= (max_iter*expr_count/time_op/1000, tot/expr_count*1000,
96
+ops = max_iter*expr_count*sz/time_op/(1000*1000)
97
+msg = "%5.1fM op/s %6.1fK iter/s %.1fms per expr (%dK iter, %d op per expr)"
98
+msg %= (ops,
99
+        max_iter*expr_count/time_op/1000,
100
+        tot/expr_count*1000,
77 101
         max_iter//1000, sz)
78 102
 print(msg)

Loading…
Cancel
Save