A few notes on choosing between Go and D for a quick project

Bienlein via Digitalmars-d digitalmars-d at puremagic.com
Wed Mar 18 01:58:36 PDT 2015


> What about using a JVM with green threads support or Quasar, 
> wouldn't it be more comparable?
>
> --
> Paulo

Long text, contents of common interest in the last section :-)

Thanks for the hints, Paulo. Quasar looks interesting. The 
current number one actor implementation for the JVM is Akka 
(akka.io). It was earlier built on Hawtdispatch 
(https://github.com/fusesource/hawtdispatch), which is similar to 
Quasar but much simpler. Now they have plugged in their own 
scheduler. Those libraries follow the same approach that a small 
number of threads (small to make the overhead of context switches 
small) serve a large number of consumers (e.g., channels, actors, 
or whatever consumer abstraction). This works well as long as all 
tasks are short-runners. It becomes a problem once you have many 
long-runners. Me talking about large fibonacci numbers in my 
previous post was to indicate that it is all about the problem 
with long-runners. In Vert.x they have a separate scheduler for 
long-runners that can serve a certain number of tasks and rejects 
tasks once the max is exceeded. I will check out have they have 
implemented channel select in Quasar. In Go they can do this 
efficiently, because it is done by the built-in scheduler and not 
in the library.

As what D is concerned it has vibe.d, which follows on principle 
the same approach as described above from what I understand about 
it. There is an old discussion about integrating vibe.d in the D 
distribution. This way multi-threading in D comes with batteries 
included as in Go. I still think this is a good idea :-).


More information about the Digitalmars-d mailing list