Fix test and add skynet example.

This commit is contained in:
Bob Nystrom
2016-02-14 22:21:50 -08:00
parent d823896136
commit b8e85c83a8
3 changed files with 29 additions and 2 deletions

27
example/skynet.wren Normal file
View File

@ -0,0 +1,27 @@
// A million fiber microbenchmark based on: https://github.com/atemerev/skynet.
class Skynet {
static makeFiber(num, size, div) {
return Fiber.new {
if (size == 1) {
Fiber.yield(num)
} else {
var fibers = []
for (i in 0...div) {
var subNum = num + i * (size / div)
fibers.add(makeFiber(subNum, size / div, div))
}
var sum = 0
for (task in fibers) {
sum = sum + task.call()
}
Fiber.yield(sum)
}
}
}
}
var start = System.clock
var result = Skynet.makeFiber(0, 1000000, 10).call()
var end = System.clock
System.print("Result: %(result) in %(end - start) s")

View File

@ -27,6 +27,6 @@ for (i in 1..5000) {
System.print(histogram.count) // expect: 24
for (key in histogram.keys) {
var error = (histogram[key] / (5000 / 24) - 1).abs
if (error > 0.2) System.print("!!! %(error)")
if (error > 0.21) System.print("!!! %(error)")
}

View File

@ -122,7 +122,7 @@ class Test:
timed_out[0] = True
p.kill()
timer = Timer(2, kill_process, [proc])
timer = Timer(5, kill_process, [proc])
try:
timer.start()