D vs Go in real life
John Colvin
john.loughran.colvin at gmail.com
Tue Nov 5 05:11:35 PST 2013
On Tuesday, 5 November 2013 at 13:05:21 UTC, Atila Neves wrote:
> So my buddy Jeff at work is a massive Go fan and goes on about
> it all the time. He even got me to try it once but I mostly
> hated it. To each his own. However, he laid down the gauntlet
> last Thursday saying his MQTT broker implementation in Go
> couldn't be beaten in performance. For those not in the know,
> MQTT is a publish/subscribe network protocol. And Go is all
> about parallel network programming, so what could beat it,
> right?
>
> Always up for a challenge, I went ahead and implemented enough
> of an MQTT broker to handle the functionality required by the
> benchmark program he wrote to test his own code. In D of
> course, with the network code coming from vibe.d.
>
> The result? 11% - 34% faster than the Go implementation
> depending on the workload (34%, 30%, 11%, 30%). The low end of
> that was with a higher number of connected clients, and that
> could always be me not using vibe.d well (I'd never used it
> before last Friday).
>
> I also measured Mosquitto, an open-source C implementation. It
> mostly beat my D one, and went from 1% slower to 17% faster
> than the D/vibe.d combo depending on workload, with that 17%
> being an outlier (-1%, 5%, 17%, 3%, 3%).
>
> I actually have error bars for all those values but thought
> it'd be too much to post them here. D FTW!
>
> Atila
>
> P.S. Not all was roses. Although getting to write D again was
> awesome (and I beat him), I ran into multiple problems:
>
> - Trying to use dub to compile the project in release or
> profile mode flat out didn't work. I had to take the verbose
> output of dub, use it to compile vibe.d in debug mode into an
> object file and compile my own code separately and link it in.
> I believe this was a dmd regression. Speaking of which, why
> does dub recompile the world instead of tracking dependencies
> (I tried the rdmd option once but that didn't work, I can't
> remember why)?
>
> - I ran into a dmd bug when I tried to use TaskPool.map with a
> delegate so I had to give up trying that possible optimisation.
>
> - I ran into another dmd bug (it crashed) at one point if
> -inline was used.
>
> - dub build with LDC and GDC failed miserably. I think it was
> because of vibe.d.
this is with dmd? I wonder how those numbers would look if you
could get ldc/gdc up and running.
More information about the Digitalmars-d
mailing list