Skip to content

Commit 5369a76

Browse files
committed
add more scripts
1 parent 82d3198 commit 5369a76

29 files changed

Lines changed: 54530 additions & 2 deletions

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,16 @@ The executables are generated through dynamic compilation, including all release
44

55
## Issues
66
- github workflow is needed to upload artifacts
7+
8+
9+
## Build
10+
11+
```
12+
python build_all_versions.py
13+
```
14+
15+
## Run benchmarks
16+
17+
```
18+
python scripts/run_benchmarks.py
19+
```

benchmarks/dict_0.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# test basic get/set
2+
import random
3+
random.seed(7)
4+
5+
a = {str(i): i for i in range(100)}
6+
a['existed'] = 0
7+
a['missed'] = 0
8+
9+
for i in range(1000000):
10+
key = str(random.randint(-100, 100))
11+
if key in a:
12+
a['existed'] += 1
13+
else:
14+
a['missed'] += 1
15+
16+
existed = a['existed']
17+
missed = a['missed']
18+
19+
assert abs(existed - missed) < 10000
20+
21+
# rnd = random.Random(7)
22+
# assert rnd.randint(1, 100) == 16
23+
# assert rnd.randint(1, 100) == 93
24+
# assert rnd.randint(1, 100) == 22

benchmarks/dict_1.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# test deletion
2+
rnd = 0
3+
keys = []
4+
while True:
5+
keys.append(rnd)
6+
rnd = ((rnd * 5) + 1) & 1023
7+
if rnd == 0:
8+
break
9+
10+
assert len(keys) == 1024
11+
12+
a = {k: k for k in keys}
13+
14+
for i in range(10000):
15+
if i % 2 == 0:
16+
# del all keys
17+
for k in keys:
18+
del a[k]
19+
assert len(a) == 0
20+
else:
21+
# add keys back
22+
for k in keys:
23+
a[k] = k
24+
assert len(a) == len(keys)
25+
26+
assert len(a) == len(keys)
27+
assert list(a.keys()) == keys # order matters

benchmarks/dumps_loads_json.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import json
2+
3+
data1 = [1, 2, 3] * 100
4+
data2 = [1.0, 2.0, 3.0] * 100
5+
data3 = ['abcdefg', 'hijklmn', '_______________1'] * 100
6+
data4 = [True, False, True] * 100
7+
data5 = [None, None] * 100
8+
9+
original = {
10+
'1': data1,
11+
'2': data2,
12+
'3': data3,
13+
'45': {
14+
'4': data4,
15+
'5': data5,
16+
}
17+
}
18+
19+
for i in range(10000):
20+
encoded = json.dumps(original)
21+
decoded = json.loads(encoded)
22+
if i == 0:
23+
assert original == decoded
24+

benchmarks/dumps_loads_pkl.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import pickle
2+
3+
data1 = [1, 2, 3] * 100
4+
data2 = [1.0, 2.0, 3.0] * 100
5+
data3 = ['abcdefg', 'hijklmn', '_______________1'] * 100
6+
data4 = [True, False, True] * 100
7+
data5 = [None, None] * 100
8+
9+
original = {
10+
'1': data1,
11+
'2': data2,
12+
'3': data3,
13+
'45': {
14+
'4': data4,
15+
'5': data5,
16+
}
17+
}
18+
19+
for i in range(10000):
20+
encoded = pickle.dumps(original)
21+
decoded = pickle.loads(encoded)
22+
if i == 0:
23+
assert original == decoded
24+

benchmarks/fib.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
def fib(n):
2+
if n < 2:
3+
return n
4+
return fib(n-1) + fib(n-2)
5+
6+
assert fib(36) == 14930352

benchmarks/function_0.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
def f(a, b, c):
2+
pass
3+
4+
for i in range(10000000):
5+
f(1, 2, 3)
6+
f(1, 2, 3)
7+
f(1, 2, 3)
8+
f(1, 2, 3)

benchmarks/function_1.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class A:
2+
def f(self, a, b, c):
3+
pass
4+
5+
a = A()
6+
for i in range(10000000):
7+
a.f(1, 2, 3)
8+
a.f(1, 2, 3)
9+
a.f(1, 2, 3)
10+
a.f(1, 2, 3)
11+

benchmarks/ldtk_json.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import os
2+
os.chdir('benchmarks')
3+
4+
import json
5+
6+
_2489KB = 'WorldMap_GridVania_layout.ldtk'
7+
_1093KB = 'WorldMap_Free_layout.ldtk'
8+
_339KB = 'Typical_2D_platformer_example.ldtk'
9+
10+
with open(f'res/{_2489KB}', 'r') as f:
11+
json_content = f.read()
12+
13+
data: dict = json.loads(json_content)
14+
assert isinstance(data, dict)
15+
16+
# serialize and deserialize
17+
dumped: str = json.dumps(data)
18+
loaded: dict = json.loads(dumped)
19+
assert len(data) == len(loaded)
20+
assert data == loaded

benchmarks/loop_0.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
for i in range(10000000):
2+
pass

0 commit comments

Comments
 (0)