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

Reply via email to