For loops!

This commit is contained in:
Bob Nystrom
2013-12-24 21:04:11 -08:00
parent 1e0401bfc1
commit e6e7b2594c
18 changed files with 404 additions and 163 deletions
-37
View File
@@ -1,37 +0,0 @@
Value is just Obj* and all values are boxed.
→ time ../build/Release/wren fib.wren
9.22746e+06
real 0m12.688s
user 0m12.076s
sys 0m0.601s
---
Unboxed singletons and numbers. Value is a struct of ValueType, double, Obj* obj.
→ time ../build/Release/wren fib.wren
9.22746e+06
real 0m3.233s
user 0m3.229s
sys 0m0.003s
---
NaN tagged values.
→ time ../build/Release/wren fib.wren
9.22746e+06
real 0m3.100s
user 0m3.097s
sys 0m0.002s
---
Hoist bytecode and IP into locals in interpret loop.
→ time ../build/Release/wren fib.wren
9.22746e+06
real 0m2.490s
user 0m2.487s
sys 0m0.002s
+12
View File
@@ -0,0 +1,12 @@
local list = {}
for i = 0, 1999999 do
list[i] = i
end
local start = os.clock()
local sum = 0
for k, i in pairs(list) do
sum = sum + i
end
io.write(sum .. "\n")
io.write(string.format("elapsed: %.8f\n", os.clock() - start))
+10
View File
@@ -0,0 +1,10 @@
import time
list = range(0, 2000000)
start = time.clock()
sum = 0
for i in list:
sum += i
print(sum)
print("elapsed: " + str(time.clock() - start))
+7
View File
@@ -0,0 +1,7 @@
list = Array.new(2000000) {|i| i}
start = Time.now
sum = 0
list.each {|i| sum += i}
puts sum
puts "elapsed: " + (Time.now - start).to_s
+17
View File
@@ -0,0 +1,17 @@
var list = []
{
var i = 0
while (i < 2000000) {
list.add(i)
i = i + 1
}
}
var start = OS.clock
var sum = 0
for (i in list) {
sum = sum + i
}
IO.write(sum)
IO.write("elapsed: " + (OS.clock - start).toString)
+2
View File
@@ -30,6 +30,8 @@ BENCHMARK("fib", r"""317811
317811
317811""")
BENCHMARK("for", r"""1999999000000""")
BENCHMARK("method_call", r"""true
false""")