Skip to content

Commit 0ca90d8

Browse files
Merge pull request #217 from JakeRoggenbuck/warmup-and-fixes
Warmup and fixes
2 parents ad54bd1 + ea4ec90 commit 0ca90d8

File tree

2 files changed

+282
-7
lines changed

2 files changed

+282
-7
lines changed

main_checking.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,51 @@ def wrap_green(text):
1818

1919
still_zero = True
2020

21+
count = 0
2122
for c in text:
2223
if c not in set("0.") and still_zero:
2324
still_zero = False
2425
full_text += green
26+
if count > 8:
27+
break
28+
29+
count += 1
2530

2631
full_text += c
2732

28-
return full_text + reset
33+
return full_text + reset + " seconds"
2934

30-
# Student Id and 4 grades
3135
db = Database()
3236
grades_table = db.create_table('Grades', 5, 0)
3337
query = Query(grades_table)
3438
keys = []
3539

36-
insert_time_0 = process_time()
3740
for i in range(0, 10000):
3841
a = query.insert(906659671 + i, 93, 0, 0, 0)
42+
keys.append(906659671 + i)
3943

40-
# Print occasionally
41-
# if i % 100 == 0:
42-
# print(a)
43-
44+
insert_time_0 = process_time()
45+
for i in range(0, 10000):
46+
a = query.insert(906659671 + i, 93, 0, 0, 0)
4447
keys.append(906659671 + i)
4548
insert_time_1 = process_time()
4649

4750
print("Inserting 10k records took: \t\t\t", wrap_green(insert_time_1 - insert_time_0))
4851

52+
times = []
53+
for _ in range(5):
54+
db = Database()
55+
grades_table = db.create_table('Grades', 5, 0)
56+
query = Query(grades_table)
57+
58+
start = process_time()
59+
for i in range(10000):
60+
query.insert(906659671 + i, 93, 0, 0, 0)
61+
end = process_time()
62+
times.append(end - start)
63+
64+
print("Insert 10k records average:\t\t\t", wrap_green(sum(times)/len(times)))
65+
4966
# Measuring update Performance
5067
update_cols = [
5168
[None, None, None, None, None],

warmup.md

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
## Adding an insert warmup
2+
3+
We could have shaved off 0.839ms (or made it 3.58x faster!) simply by giving the database a warmup run before the benchmarks run.
4+
5+
>>> without = [0.0117210, 0.0117610, 0.0113612, 0.0118570, 0.0114723]
6+
>>> with_warmup = [0.0032362, 0.0033220, 0.0031920, 0.0032789, 0.0032101]
7+
8+
I discovered this by accident comparing the `./main_checking.py` and `./__main__.py` runtimes, which seem to be different.
9+
10+
## Data
11+
12+
### Without Warmup
13+
14+
```
15+
(venv) redoxql-m3 (main) λ p main_checking.py
16+
17+
18+
______ _ _____ _
19+
| ___ \ | | | _ | |
20+
| |_/ /___ __| | _____ _| | | | |
21+
| // _ \/ _` |/ _ \ \/ / | | | |
22+
| |\ \ __/ (_| | (_) > <\ \/' / |____
23+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
24+
25+
=======================================
26+
27+
RedoxQL is an L-Store database written
28+
in Rust and Python.
29+
30+
Milestone: 1
31+
32+
Inserting 10k records took: 0.0117210 seconds
33+
Insert 10k records average: 0.0059220 seconds
34+
Updating 10k records took: 0.0217667 seconds
35+
Selecting 10k records took: 0.0152404 seconds
36+
Aggregate 10k of 100 record batch took: 0.0065665 seconds
37+
Deleting 10k records took: 0.0032334 seconds
38+
39+
(venv) redoxql-m3 (main) λ p main_checking.py
40+
41+
42+
______ _ _____ _
43+
| ___ \ | | | _ | |
44+
| |_/ /___ __| | _____ _| | | | |
45+
| // _ \/ _` |/ _ \ \/ / | | | |
46+
| |\ \ __/ (_| | (_) > <\ \/' / |____
47+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
48+
49+
=======================================
50+
51+
RedoxQL is an L-Store database written
52+
in Rust and Python.
53+
54+
Milestone: 1
55+
56+
Inserting 10k records took: 0.0117610 seconds
57+
Insert 10k records average: 0.0060219 seconds
58+
Updating 10k records took: 0.0216311 seconds
59+
Selecting 10k records took: 0.0153234 seconds
60+
Aggregate 10k of 100 record batch took: 0.0061702 seconds
61+
Deleting 10k records took: 0.0037029 seconds
62+
63+
(venv) redoxql-m3 (main) λ p main_checking.py
64+
65+
66+
______ _ _____ _
67+
| ___ \ | | | _ | |
68+
| |_/ /___ __| | _____ _| | | | |
69+
| // _ \/ _` |/ _ \ \/ / | | | |
70+
| |\ \ __/ (_| | (_) > <\ \/' / |____
71+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
72+
73+
=======================================
74+
75+
RedoxQL is an L-Store database written
76+
in Rust and Python.
77+
78+
Milestone: 1
79+
80+
Inserting 10k records took: 0.0113612 seconds
81+
Insert 10k records average: 0.0059399 seconds
82+
Updating 10k records took: 0.0216389 seconds
83+
Selecting 10k records took: 0.0150633 seconds
84+
Aggregate 10k of 100 record batch took: 0.0085654 seconds
85+
Deleting 10k records took: 0.0049268 seconds
86+
87+
(venv) redoxql-m3 (main) λ p main_checking.py
88+
89+
90+
______ _ _____ _
91+
| ___ \ | | | _ | |
92+
| |_/ /___ __| | _____ _| | | | |
93+
| // _ \/ _` |/ _ \ \/ / | | | |
94+
| |\ \ __/ (_| | (_) > <\ \/' / |____
95+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
96+
97+
=======================================
98+
99+
RedoxQL is an L-Store database written
100+
in Rust and Python.
101+
102+
Milestone: 1
103+
104+
Inserting 10k records took: 0.0118570 seconds
105+
Insert 10k records average: 0.0060450 seconds
106+
Updating 10k records took: 0.0212251 seconds
107+
Selecting 10k records took: 0.0149994 seconds
108+
Aggregate 10k of 100 record batch took: 0.0068376 seconds
109+
Deleting 10k records took: 0.0036636 seconds
110+
111+
(venv) redoxql-m3 (main) λ p main_checking.py
112+
113+
114+
______ _ _____ _
115+
| ___ \ | | | _ | |
116+
| |_/ /___ __| | _____ _| | | | |
117+
| // _ \/ _` |/ _ \ \/ / | | | |
118+
| |\ \ __/ (_| | (_) > <\ \/' / |____
119+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
120+
121+
=======================================
122+
123+
RedoxQL is an L-Store database written
124+
in Rust and Python.
125+
126+
Milestone: 1
127+
128+
Inserting 10k records took: 0.0114723 seconds
129+
Insert 10k records average: 0.0060868 seconds
130+
Updating 10k records took: 0.0214978 seconds
131+
Selecting 10k records took: 0.0151961 seconds
132+
Aggregate 10k of 100 record batch took: 0.0072582 seconds
133+
Deleting 10k records took: 0.0041888 seconds
134+
```
135+
136+
### With Warmup
137+
138+
```
139+
(venv) redoxql-m3 (main) λ p main_checking.py
140+
141+
142+
______ _ _____ _
143+
| ___ \ | | | _ | |
144+
| |_/ /___ __| | _____ _| | | | |
145+
| // _ \/ _` |/ _ \ \/ / | | | |
146+
| |\ \ __/ (_| | (_) > <\ \/' / |____
147+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
148+
149+
=======================================
150+
151+
RedoxQL is an L-Store database written
152+
in Rust and Python.
153+
154+
Milestone: 1
155+
156+
Inserting 10k records took: 0.0032362 seconds
157+
Insert 10k records average: 0.0059782 seconds
158+
Updating 10k records took: 0.0218384 seconds
159+
Selecting 10k records took: 0.0160259 seconds
160+
Aggregate 10k of 100 record batch took: 0.0067736 seconds
161+
Deleting 10k records took: 0.0035029 seconds
162+
163+
(venv) redoxql-m3 (main) λ p main_checking.py
164+
165+
166+
______ _ _____ _
167+
| ___ \ | | | _ | |
168+
| |_/ /___ __| | _____ _| | | | |
169+
| // _ \/ _` |/ _ \ \/ / | | | |
170+
| |\ \ __/ (_| | (_) > <\ \/' / |____
171+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
172+
173+
=======================================
174+
175+
RedoxQL is an L-Store database written
176+
in Rust and Python.
177+
178+
Milestone: 1
179+
180+
Inserting 10k records took: 0.0033220 seconds
181+
Insert 10k records average: 0.0060065 seconds
182+
Updating 10k records took: 0.0224251 seconds
183+
Selecting 10k records took: 0.0185516 seconds
184+
Aggregate 10k of 100 record batch took: 0.0096829 seconds
185+
Deleting 10k records took: 0.0036378 seconds
186+
187+
(venv) redoxql-m3 (main) λ p main_checking.py
188+
189+
190+
______ _ _____ _
191+
| ___ \ | | | _ | |
192+
| |_/ /___ __| | _____ _| | | | |
193+
| // _ \/ _` |/ _ \ \/ / | | | |
194+
| |\ \ __/ (_| | (_) > <\ \/' / |____
195+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
196+
197+
=======================================
198+
199+
RedoxQL is an L-Store database written
200+
in Rust and Python.
201+
202+
Milestone: 1
203+
204+
Inserting 10k records took: 0.0031920 seconds
205+
Insert 10k records average: 0.0060142 seconds
206+
Updating 10k records took: 0.0215623 seconds
207+
Selecting 10k records took: 0.0155171 seconds
208+
Aggregate 10k of 100 record batch took: 0.0064726 seconds
209+
Deleting 10k records took: 0.0033066 seconds
210+
211+
(venv) redoxql-m3 (main) λ p main_checking.py
212+
213+
214+
______ _ _____ _
215+
| ___ \ | | | _ | |
216+
| |_/ /___ __| | _____ _| | | | |
217+
| // _ \/ _` |/ _ \ \/ / | | | |
218+
| |\ \ __/ (_| | (_) > <\ \/' / |____
219+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
220+
221+
=======================================
222+
223+
RedoxQL is an L-Store database written
224+
in Rust and Python.
225+
226+
Milestone: 1
227+
228+
Inserting 10k records took: 0.0032789 seconds
229+
Insert 10k records average: 0.0060473 seconds
230+
Updating 10k records took: 0.0218113 seconds
231+
Selecting 10k records took: 0.0153821 seconds
232+
Aggregate 10k of 100 record batch took: 0.0062161 seconds
233+
Deleting 10k records took: 0.0031495 seconds
234+
235+
(venv) redoxql-m3 (main) λ p main_checking.py
236+
237+
238+
______ _ _____ _
239+
| ___ \ | | | _ | |
240+
| |_/ /___ __| | _____ _| | | | |
241+
| // _ \/ _` |/ _ \ \/ / | | | |
242+
| |\ \ __/ (_| | (_) > <\ \/' / |____
243+
\_| \_\___|\__,_|\___/_/\_\\_/\_\_____/
244+
245+
=======================================
246+
247+
RedoxQL is an L-Store database written
248+
in Rust and Python.
249+
250+
Milestone: 1
251+
252+
Inserting 10k records took: 0.0032101 seconds
253+
Insert 10k records average: 0.0062221 seconds
254+
Updating 10k records took: 0.0240348 seconds
255+
Selecting 10k records took: 0.0174595 seconds
256+
Aggregate 10k of 100 record batch took: 0.0067344 seconds
257+
Deleting 10k records took: 0.0033091 seconds
258+
```

0 commit comments

Comments
 (0)