-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsmall_bm.py
60 lines (48 loc) · 1.28 KB
/
small_bm.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import timeit
from natlog.natlog import *
def time_of(f, x, times=1):
start_time = timeit.default_timer()
for i in range(times):
res = f(x)
if i == times - 1: print(x)
end_time = timeit.default_timer()
print(x, '==>', 'res = ', res)
print('time = ', end_time - start_time)
print('')
my_text = """
app () Ys Ys.
app (X Xs) Ys (X Zs) :
app Xs Ys Zs.
nrev () ().
nrev (X Xs) Zs : nrev Xs Ys, app Ys (X ()) Zs.
goal N L :
`genList N Xs,
nrev Xs Ys,
`llen Ys L.
"""
def bm():
n = Natlog(text=my_text)
n.query("goal 10 L?")
time_of(n.count, "goal 16 L?", times=256)
time_of(n.count, "goal 32 L?", times=64)
time_of(n.count, "goal 64 L?", times=16)
time_of(n.count, "goal 128 L?", times=4)
# time_of(n.count, "goal 250 L?", times=1)
print('')
n = Natlog(file_name="natprogs/queens.nat")
time_of(n.count, "goal8 Queens?", times=9)
time_of(n.count, "goal9 Queens?")
time_of(n.count, "goal10 Queens?")
# return # runs, but quite a bit longer
time_of(n.count, "goal11 Queens?")
time_of(n.count, "goal12 Queens?")
def prof():
import cProfile
p = cProfile.Profile()
def fun():
n = Natlog(text=my_text)
n.count('goal 200 L?')
p.runcall(fun)
p.print_stats(sort=1)
if __name__=="__main__" :
bm()