Marco Leise:
I ported fast paq8 (fp8) to D, and with some careful
D-ification and optimization it runs a bit faster than the
original C program when compiled with the GCC on Linux x86_64,
Core 2 Duo.
I guess you mean GDC.
With DMD, even if you are a good D programmer, it's not easy to
beat that original C compressor :-)
Do you have a link to your D version?
Matt Mahoney is probably willing to put a link in his site to
your D version.
I don't know about this version of paq you ported the coder
from,
It was a very basic coder.
The D GC on the other hand allocates that memory and writes
zeroes to it immediately.
Is this always done the first time the memory is allocated by the
GC?
The effect is two fold: First, the calloc version will use
much less RAM, if
the 'allocated' buffers aren't fully used (e.g. you
compressed a small file).
On the other hand in D you may allocate the memory in a more
conscious way.
"static assert(Foo.sizeof == 64);" helped me find a bug there
that
resulted from switching from C bitfields to the D version
(which is a library
solution in Phobos).
The Phobos D bitfields aren't required to mimic C, but that's an
interesting case. Maybe it's a difference interesting to be taken
a look at. Do you have the code of the two C-D versions?
Bye,
bearophile