The test runner's per-test timeout was raised to 5 seconds to prevent flaky timeouts on slower systems. A new example file (example/skynet.wren) was added demonstrating a million-fiber microbenchmark based on the skynet algorithm, showcasing Wren's fiber concurrency model. Additionally, the shuffle test's tolerance threshold was relaxed from 0.2 to 0.21 to reduce false positives in the random distribution check.
28 lines
681 B
JavaScript
Vendored
28 lines
681 B
JavaScript
Vendored
// 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")
|