mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-09 21:28:39 +01:00
28 lines
681 B
Plaintext
28 lines
681 B
Plaintext
// 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")
|