|
@@ -3,6 +3,8 @@
|
3
|
3
|
import sys
|
4
|
4
|
import random
|
5
|
5
|
import time
|
|
6
|
+import warnings
|
|
7
|
+
|
6
|
8
|
|
7
|
9
|
try:
|
8
|
10
|
import pyrpn
|
|
@@ -11,29 +13,48 @@ except (ImportError, NameError) as e:
|
11
|
13
|
file=sys.stderr)
|
12
|
14
|
raise e
|
13
|
15
|
|
14
|
|
-
|
15
|
|
-expr_count = 0x200
|
16
|
|
-max_iter = 0x3000
|
|
16
|
+#expr_count = 0x200
|
|
17
|
+#max_iter = 0x3000
|
|
18
|
+#argc = 2
|
|
19
|
+#sz = 0x20
|
|
20
|
+expr_count = 5000
|
|
21
|
+max_iter = 0x5000
|
17
|
22
|
argc = 2
|
18
|
|
-sz = 0x10
|
|
23
|
+sz = 0x30
|
|
24
|
+
|
|
25
|
+try:
|
|
26
|
+ from tqdm import tqdm
|
|
27
|
+ tqr = lambda m: tqdm(range(m), unit='expr', unit_scale=True,
|
|
28
|
+ #unit_scale=max_iter>>10,
|
|
29
|
+ mininterval=.15)
|
|
30
|
+ write=False
|
|
31
|
+except (ImportError, NameError) as e:
|
|
32
|
+ warnings.warn('tqdm not found')
|
|
33
|
+ tqr = range
|
|
34
|
+ write=True
|
19
|
35
|
|
20
|
36
|
if len(sys.argv) > 1:
|
21
|
37
|
expr_count = int(sys.argv[1], 0)
|
22
|
38
|
if len(sys.argv) > 2:
|
23
|
39
|
max_iter = int(sys.argv[2], 0)
|
24
|
40
|
if len(sys.argv) > 3:
|
25
|
|
- argc = int(sys.argv[3], 0)
|
26
|
|
-if len(sys.argv) > 4:
|
27
|
41
|
sz = int(sys.argv[4], 0)
|
|
42
|
+if len(sys.argv) > 4:
|
|
43
|
+ argc = int(sys.argv[3], 0)
|
28
|
44
|
|
29
|
45
|
tot = 0
|
30
|
46
|
time_op = 0
|
31
|
47
|
start = time.time()
|
32
|
48
|
IMAX = (1<<63)-1
|
33
|
49
|
samples = 8
|
|
50
|
+
|
|
51
|
+print("Running %dK iter on %d expressions with %d op" % (max_iter//1000,
|
|
52
|
+ expr_count,
|
|
53
|
+ sz))
|
|
54
|
+
|
34
|
55
|
rnd_samples = [[[random.randint(0, IMAX) for _ in range(argc)] for _ in range(max_iter)]
|
35
|
56
|
for _ in range(samples)]
|
36
|
|
-for i in range(expr_count):
|
|
57
|
+for i in tqr(expr_count):
|
37
|
58
|
rnd_expr = pyrpn.random_expr(argc, sz)
|
38
|
59
|
all_start = time.time()
|
39
|
60
|
expr = pyrpn.RPNExpr(rnd_expr, argc)
|
|
@@ -43,9 +64,15 @@ for i in range(expr_count):
|
43
|
64
|
expr.eval(*rnd)
|
44
|
65
|
time_op += time.time() - start_op
|
45
|
66
|
tot += time.time() - all_start
|
46
|
|
- sys.stderr.write(".")
|
47
|
|
- sys.stderr.flush()
|
48
|
|
-sys.stderr.write("\n")
|
|
67
|
+ if write:
|
|
68
|
+ sys.stderr.write(".")
|
|
69
|
+ sys.stderr.flush()
|
|
70
|
+if write:
|
|
71
|
+ sys.stderr.write("\n")
|
49
|
72
|
total = time.time() - start
|
50
|
|
-print("Runned %.2fs" % total)
|
51
|
|
-print("%.1fK iter/s %.1fms per expr" % (max_iter*expr_count/time_op/1000, tot/expr_count*1000))
|
|
73
|
+print("Runned %dK iter on %d expressions in %.2fs" % (max_iter//1000,
|
|
74
|
+ 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,
|
|
77
|
+ max_iter//1000, sz)
|
|
78
|
+print(msg)
|