|
3 | 3 | ---Get the operating system the script is running on |
4 | 4 | ---@return string A string that will read: DOS, NT, UNIX or Unknown |
5 | 5 | function OS() |
6 | | - if os.getenv("COMSPEC") then |
7 | | - return os.getenv("OS") and "NT" or "DOS" |
8 | | - else |
9 | | - return os.getenv("SHELL") and "UNIX" or "Unknown" |
10 | | - end |
| 6 | + if os.getenv("COMSPEC") then |
| 7 | + return os.getenv("OS") and "NT" or "DOS" |
| 8 | + else |
| 9 | + return os.getenv("SHELL") and "UNIX" or "Unknown" |
| 10 | + end |
11 | 11 | end |
12 | 12 |
|
13 | 13 | ---Benchmark start, prints the benchmark name and records the current time |
14 | 14 | ---@param name string The name of the benchmark |
15 | 15 | ---@param it number The number of times the benchmark will loop |
16 | 16 | ---@return number The current clock time |
17 | 17 | function BS(name, it) |
18 | | - local t = #tostring(it) > 10 and string.format("%10e", it):gsub("%..-e", "e") or it |
19 | | - io.write(string.format("%-9s", name) .. "\t" .. string.format("%10s", t) .. "\t") |
20 | | - io.flush() |
21 | | - return os.clock() |
| 18 | + local t = #tostring(it) > 10 and string.format("%10e", it):gsub("%..-e", "e") or it |
| 19 | + io.write(string.format("%-9s", name) .. "\t" .. string.format("%10s", t) .. "\t") |
| 20 | + io.flush() |
| 21 | + return os.clock() |
22 | 22 | end |
23 | 23 |
|
24 | 24 | ---Benchmark end, prints the benchmarks duration |
25 | 25 | ---@param st number The start time returned by BS |
26 | 26 | function BE(st) |
27 | | - local t = os.clock() - st |
28 | | - local m, s = math.floor(t / 60), t % 60 |
29 | | - io.write(string.format("%7d:%09.6f\n", m, s)) |
| 27 | + local t = os.clock() - st |
| 28 | + local m, s = math.floor(t / 60), t % 60 |
| 29 | + io.write(string.format("%7d:%09.6f\n", m, s)) |
30 | 30 | end |
31 | 31 |
|
32 | 32 | ---A benchmark for calculating Pi using the Nilkantha's series |
33 | 33 | local function b_pi() |
34 | | - local it, pi, si = S, 3, 1 |
35 | | - local b = BS("Nilakantha Pi", it) |
36 | | - for i = 2, it * 2, 2 do |
37 | | - pi = pi + si * (4 / (i * (i + 1) * (i + 2))) |
38 | | - si = -si |
39 | | - end |
40 | | - BE(b) |
| 34 | + local it, pi, si = S, 3, 1 |
| 35 | + local b = BS("Nilakantha Pi", it) |
| 36 | + for i = 2, it * 2, 2 do |
| 37 | + pi = pi + si * (4 / (i * (i + 1) * (i + 2))) |
| 38 | + si = -si |
| 39 | + end |
| 40 | + BE(b) |
41 | 41 | end |
42 | 42 |
|
43 | 43 | ---A benchmark for calculating a common divisor |
44 | 44 | local function b_gcd() |
45 | | - local function gcd(a, b) |
46 | | - while b ~= 0 do |
47 | | - a, b = b, a % b |
48 | | - end |
49 | | - return a |
50 | | - end |
51 | | - local r, b = 0, BS("Common Divisor", S) |
52 | | - for i = 1, S do |
53 | | - local x, y = i, S - i + 1 |
54 | | - r = gcd(x, y) |
55 | | - end |
56 | | - BE(b) |
| 45 | + local function gcd(a, b) |
| 46 | + while b ~= 0 do |
| 47 | + a, b = b, a % b |
| 48 | + end |
| 49 | + return a |
| 50 | + end |
| 51 | + local r, b = 0, BS("Common Divisor", S) |
| 52 | + for i = 1, S do |
| 53 | + local x, y = i, S - i + 1 |
| 54 | + r = gcd(x, y) |
| 55 | + end |
| 56 | + BE(b) |
57 | 57 | end |
58 | 58 |
|
59 | 59 | ---A benchmark for calculating multiplication performance |
60 | 60 | local function b_mul() |
61 | | - local r, b = 1, BS("Multiplication", B) |
62 | | - for _ = 1, B do |
63 | | - r = (r * 1.000000001) |
64 | | - end |
65 | | - BE(b) |
| 61 | + local r, b = 1, BS("Multiplication", B) |
| 62 | + for _ = 1, B do |
| 63 | + r = (r * 1.000000001) |
| 64 | + end |
| 65 | + BE(b) |
66 | 66 | end |
67 | 67 |
|
68 | 68 | ---A benchmark for calculating division performance |
69 | 69 | local function b_div() |
70 | | - local m, r = B, 1 |
71 | | - local b = BS("Division", m) |
72 | | - m = m + 1 |
73 | | - for i = 2, m do |
74 | | - r = r / i |
75 | | - end |
76 | | - BE(b) |
| 70 | + local m, r = B, 1 |
| 71 | + local b = BS("Division", m) |
| 72 | + m = m + 1 |
| 73 | + for i = 2, m do |
| 74 | + r = r / i |
| 75 | + end |
| 76 | + BE(b) |
77 | 77 | end |
78 | 78 |
|
79 | 79 | ---A benchmark for calculating addition performance |
80 | 80 | local function b_add() |
81 | | - local r, b = 1, BS("Addition", B) |
82 | | - for i = 1, B do |
83 | | - r = r + i |
84 | | - end |
85 | | - BE(b) |
| 81 | + local r, b = 1, BS("Addition", B) |
| 82 | + for i = 1, B do |
| 83 | + r = r + i |
| 84 | + end |
| 85 | + BE(b) |
86 | 86 | end |
87 | 87 |
|
88 | 88 | ---A benchmark for calculating floating point addition performance |
89 | 89 | local function b_flt() |
90 | | - local r, b = 1.0, BS("Float Addition", B) |
91 | | - for _ = 1, B do |
92 | | - r = r + 0.01 |
93 | | - end |
94 | | - BE(b) |
| 90 | + local r, b = 1.0, BS("Float Addition", B) |
| 91 | + for _ = 1, B do |
| 92 | + r = r + 0.01 |
| 93 | + end |
| 94 | + BE(b) |
95 | 95 | end |
96 | 96 |
|
97 | 97 | ---A benchmark for calculating subtraction performance |
98 | 98 | local function b_sub() |
99 | | - local r, b = 1, BS("Subtraction", B) |
100 | | - for i = B, 1, -1 do |
101 | | - r = r - i |
102 | | - end |
103 | | - BE(b) |
| 99 | + local r, b = 1, BS("Subtraction", B) |
| 100 | + for i = B, 1, -1 do |
| 101 | + r = r - i |
| 102 | + end |
| 103 | + BE(b) |
104 | 104 | end |
105 | 105 |
|
106 | 106 | ---A benchmark for calculating array iteration performance |
107 | 107 | local function b_arr() |
108 | | - local b, a, s = BS("Array Loop", S), {}, 0 |
109 | | - for i = 1, S do |
110 | | - a[i] = i % 10 |
111 | | - end |
112 | | - for i = 1, S do |
113 | | - a[i] = a[i] * 2 |
114 | | - end |
115 | | - for i = 1, S do |
116 | | - s = s + a[i] |
117 | | - end |
118 | | - BE(b) |
| 108 | + local b, a, s = BS("Array Loop", S), {}, 0 |
| 109 | + for i = 1, S do |
| 110 | + a[i] = i % 10 |
| 111 | + end |
| 112 | + for i = 1, S do |
| 113 | + a[i] = a[i] * 2 |
| 114 | + end |
| 115 | + for i = 1, S do |
| 116 | + s = s + a[i] |
| 117 | + end |
| 118 | + BE(b) |
119 | 119 | end |
120 | 120 |
|
121 | 121 | ---Print a horizontal line on the screen |
122 | 122 | local function L() |
123 | | - print(string.rep('_', 49)) |
| 123 | + print(string.rep('_', 49)) |
124 | 124 | end |
125 | 125 |
|
126 | 126 | --Print basic system and Lua information |
|
0 commit comments