On 2011-01-05 18:37, Nick Sabalausky wrote:
"bearophile"<bearophileh...@lycos.com>  wrote in message
news:ig1d3l$kt...@digitalmars.com...
Adrian Mercieca:

How does D square up, performance-wise, to C and C++ ?
Has anyone got any benchmark figures?

DMD has an old back-end, it doesn't use SSE (or AVX) registers yet (64 bit
version will use 8 or more SSE registers), and sometimes it's slower for
integer programs too. I've seen DMD programs slow down if you nest two
foreach inside each other. There is a collection of different slow
microbenchmarks.

But LDC1 is able to run D1 code that looks like C about equally fast as C
or sometimes a bit faster.

DMD2 uses thread local memory on default that in theory slows code down a
bit if you use global data, but I have never seen a benchmark that shows
this slowdown clearly (an there is __gshared too, but sometimes it seems a
placebo).

If you use higher level constructs your program will often go slower.

Often one of the most important things for speed is memory management, D
encourages to heap allocate a lot (class instances are usually on the
heap), and this is very bad for performance, also because the built-in GC
doesn't have an Eden generation managed as a stack. So if you want more
performance you must program like in Pascal/Ada, stack-allocating a lot,
or using memory pools, etc. It's a lot a matter of self-discipline while
you program.



OTOH, the design of D and Phobos2 strongly encourages fast techniques such
as array slicing, pre-computation at compile-time, and appropriate use of
things like caching and lazy evaluation. Many of these things probably can
be done in C/C++, technically speaking, but D makes them far easier and more
accessable, and thus more likely to actually get used.

As an example, see how D's built-in array slicing helped Tango's XML lib
beat the snot out of other language's fast-XML libs:
http://dotnot.org/blog/archives/2008/03/12/why-is-dtango-so-fast-at-parsing-xml/
 -
and look at the two benchmarks the first paragraph links to.

Also, is D more of a Windows oriented language?
Do the Linux and OSX versions get as much attention as the Windows one?


Linux, Windows and OSX are all strongly supported.

Sometimes OSX might lag *slightly* in one thing or another, but that's only
because there aren't nearly as many people using D on Mac and giving it a
good workout. And even at that, it's still only gotten better since Walter
got his own Mac box to test on.

And Linux is maybe *slightly* ahead of even Windows because, like bearophile
said, it'll get 64-bit support first, and also because the Linux DMD uses
the standard Linux object-file format while Windows DMD is still using a
fairly uncommon object-file format (but that only matters if you want to
link object files from different compilers, and if you do want to, I think
there are object file converters out there).

But yea, overall, all of the big 3 OSes get plenty of attention.

And sometimes Mac OS X is *slightly* ahead of the other OSes, Tango has had support for dynamic libraries on Mac OS X using DMD for quite a while now. For D2 a patch is just sitting there in bugzilla waiting for the last part of it to be commited. I'm really pushing this because people seem to forget this.

--
/Jacob Carlborg

Reply via email to