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

Reply via email to