Message passing between threads: Java 4 times faster than D
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Feb 9 09:35:04 PST 2012
On 2/9/12 6:10 AM, Gor Gyolchanyan wrote:
> Generally, D's message passing is implemented in quite easy-to-use
> way, but far from being fast.
> I dislike the Variant structure, because it adds a huge overhead. I'd
> rather have a templated message passing system with type-safe message
> queue, so no Variant is necessary.
> In specific cases Messages can be polymorphic objects. This will be
> way faster, then Variant.
cc Sean Kelly
I haven't looked at the implementation, but one possible liability is
that large messages don't fit in a Variant and must use dynamic
allocation under the wraps. There are a number of ways to avoid that,
such as parallel arrays (one array per type for data and one for the
additional tags).
We must make the message passing subsystem to not use any memory
allocation in the quiescent state. If we're doing one allocation per
message passed, that might explain the 4x performance difference (I have
no trouble figuring Java's allocator is this much faster than D's).
Andrei
More information about the Digitalmars-d
mailing list