On Tuesday, 30 June 2015 at 16:43:58 UTC, anonymous wrote:
On Tuesday, 30 June 2015 at 15:18:36 UTC, Jack Applegame wrote:
Just creating a bunch (10k) of sleeping (for 100 msecs)
goroutines/tasks.
Compilers
go: go version go1.4.2 linux/amd64
vibe.d: DMD64 D Compiler v2.067.1 linux/amd64, vibe.d 0.7.23
Code
go: http://pastebin.com/2zBnGBpt
vibe.d: http://pastebin.com/JkpwSe47
go version build with "go build test.go"
vibe.d version built with "dub build --build=release test.d"
Results on my machine:
go: 168.736462ms (overhead ~ 68ms)
vibe.d: 1944ms (overhead ~ 1844ms)
Why creating of vibe.d tasks is so slow (more then 10 times)???
I think this might be a problem with vibe.d's `sleep`. Putting
a `writeln("...");` there is a lot faster than `sleep`ing even
the tiniest amount of time.
Sleep will almost certainly pause and block the fiber. Vibe.d
only switches between them when there's IO to be done or
something else from the event loop. A better way of comparing
would be to actually do something: use channels to ping-pong back
between the goroutines and use vibe.d's concurrency to send
messages betweeen fibers. Whatever you do, don't sleep.
Atila