slide-rs / fibe-rs

Fiberized task queue in Rust
Apache License 2.0
11 stars 0 forks source link

Add a work stealing scheduler to fibe-rs #18

Closed ghost closed 9 years ago

ghost commented 9 years ago

This is quite a bit of code. And much of it is suboptimal. But this adds a basic work-stealing thread-pool that runs the tasks.

Before:
test chain_10_use_die    ... bench:    202637 ns/iter (+/- 110323)
test chain_10_wait       ... bench:     84634 ns/iter (+/- 9213)
test chain_1_000_use_die ... bench:   7872877 ns/iter (+/- 1098996)
test chain_1_000_wait    ... bench:   7806022 ns/iter (+/- 1312216)
test fibb_depth_6        ... bench:   2969794 ns/iter (+/- 1723503)
test start_die           ... bench:       445 ns/iter (+/- 7)

After:
test bench_fibb_steal     ... bench:    405139 ns/iter (+/- 90794)
test chain_10_use_die     ... bench:    939562 ns/iter (+/- 294590)
test chain_10_wait        ... bench:    120315 ns/iter (+/- 34264)
test chain_1_000_use_die  ... bench:   1138655 ns/iter (+/- 409262)
test chain_1_000_wait     ... bench:    596570 ns/iter (+/- 59771)
test fanout_1_000         ... bench:    883532 ns/iter (+/- 350949)
test repeat_100_x_100     ... bench:   2088028 ns/iter (+/- 230252)
test repeat_1_000         ... bench:    578743 ns/iter (+/- 96315)
test repeat_1_000_x_1_000 ... bench: 189189143 ns/iter (+/- 6672870)
test start_die            ... bench:    946777 ns/iter (+/- 143467)
kvark commented 9 years ago

Sorry, I've completely lost track of the changes. Please don't wait for me if you are blocked.