On Friday, 22 September 2017 at 09:48:47 UTC, Sönke Ludwig wrote:
Am 21.09.2017 um 20:49 schrieb bitwise:
Doesn't vibe-d use Fibers?
I tried to build a simple web server with a fiber-based
approach once - it was horribly slow.
I hope C# (and soon C++) style stackless resumable functions
will eventually come to D.
It uses them and the overhead actually diminishes once the
application does anything meaningful. To test this, I created
two low-level tests for eventcore that mimic a minimal HTTP
server. AFAIR, I got around 300kreq/s on a single core without
fibers and around 290kreq/s with fibers, which amounts to an
overhead of about 0.1µs per request.
Interesting - I thought the cost would be higher.
Of the few different architectures I tried, the fiber based
approach was much slower. It's possible that my implementation
did too many unnecessary context switches.
Stackless fibers would be really nice to have because of the
merged stacks and the lower amount of reserved memory required
(even though this is not a really big issue on 64-bit systems),
but for pure performance I don't think they would be a critical
addition.
I suppose this is off topic, but for games, or any realtime
application where things need to run intermittently, but at high
frequency, and in high numbers, stackless resumable functions are
a big win. A lot of AI I've been writing lately (including some
flocking behaviors) have been built on top of C# IEnumerators.