-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathspecial_benchmarks.mojo
More file actions
72 lines (55 loc) · 1.67 KB
/
special_benchmarks.mojo
File metadata and controls
72 lines (55 loc) · 1.67 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
from radix_sorting import aflag_sort, radix_sort, aflag_copy_sort
from benchmark import run, keep
from random import random_ui64
def main():
comptime size = 2_000
var input = [UInt32(12390)] * size
var result1: List[UInt32] = []
var result2: List[UInt32] = []
var result3: List[UInt32] = []
var result4: List[UInt32] = []
for i in range(size):
# input[i] = i
input[i] = UInt32(random_ui64(0, UInt64(UInt32.MAX)))
print("----------AFlag----------")
@parameter
fn aflag_bench():
var v = input.copy()
var s = Span(v)
aflag_sort(s)
result1 = v^
var report = run[aflag_bench](max_runtime_secs=2)
report.print("ns")
print(report.mean("ns") / size)
@parameter
fn aflag_copy_bench():
var v = input.copy()
var s = Span(v)
aflag_copy_sort(s)
result2 = v^
print("----------AFlag Copy----------")
report = run[aflag_copy_bench](max_runtime_secs=2)
report.print("ns")
print(report.mean("ns") / size)
@parameter
fn radix_bench():
var v = input.copy()
radix_sort(v)
result2 = v^
print("----------Radix----------")
report = run[radix_bench](max_runtime_secs=2)
report.print("ns")
print(report.mean("ns") / size)
@parameter
fn std_bench():
var v = input.copy()
sort(v)
result3 = v^
print("----------STD-Sort----------")
report = run[std_bench](max_runtime_secs=2)
report.print("ns")
print(report.mean("ns") / size)
print("----------Validation----------")
print(result1 == result2)
print(result2 == result3)
print(result3 == result4)