Bartosz Milewski seems to like D more than C++ now :)
Piotr Szturmaj
bncrbme at jadamspam.pl
Fri Sep 20 09:51:20 PDT 2013
On 20.09.2013 17:28, Andrei Alexandrescu wrote:
> On 9/20/13 2:36 AM, bearophile wrote:
>> In D it's often better to use std.algorithm/range instead of raw foreach
>> loops (despite probably unlike C++ in D a heavy use of ranges leads to a
>> lower performance, even if you use the LDC2 compiler).
>
> Why would there be a performance loss?
Because range concept underutilize current CPUs. I don't know if all
empty/front/popFront are inlined. I suppose some templated functions
are, but surely not all of them. What will be faster, calling all of
those functions for each element or traversing memory using a loop?
Of course 2nd option will be faster, because the act of traversing
(cached) memory does not have the overhead of a function call.
Some time ago I proposed a hybrid range concept where the front() is an
array. All algorithms would first traverse the memory in this array,
then call popFront to get another array (slice). In this way, function
call overhead is minimized because it's paid sparsely rather than for
each range element.
More information about the Digitalmars-d
mailing list