Just playing with compiler explorer to see assembly line count.
Iain Buclaw
ibuclaw at gdcproject.org
Tue Oct 3 14:21:49 UTC 2017
On Tuesday, 3 October 2017 at 14:07:39 UTC, SrMordred wrote:
> On Tuesday, 3 October 2017 at 13:53:38 UTC, rikki cattermole
> wrote:
>> Be warned, x86 cpu's today are not like they were 10 years
>> ago. A good portion of a symbol could be full of nop's and it
>> could end up being faster than the one without them.
>>
>> Next, compare against ldc, not gdc primarily. Its better
>> maintained and ugh more inline with dmd (its a bit of a mess,
>> lets not go there). Of course nothing wrong with doing both.
>>
>> std.container.* is basically dead. We need to replace it. We
>> are currently waiting on std.experimental.allocators before
>> going much more further (also a lot of other no-gc stuff).
>>
>> Compare (on https://d.godbolt.org/ with "ldc -O3" and "gdc
>> -O3"):
>> ---
>> auto test1(int[] arr, int cmp)
>> {
>> int[] r;
>> foreach(v ; arr)
>> if(v == cmp)r~=v;
>> return r;
>> }
>>
>> import std.container.array;
>> auto test2(ref Array!int arr, int cmp)
>> {
>> Array!int r;
>> foreach(v ; arr)
>> if(v == cmp)r.insert(v);
>> return r;
>> }
>> ---
> With ldc the results are similar.
> 5k+
> And I know, im not into performance comparison yet. But you
> know, less code, more cache friendly (and sometimes better
> performance).
>
Well -O3 does not generate cache friendly assembly anyway. For
instance, inlining functions regardless of cost.
I'd take the assembly count with a pinch of salt when you are
using templated code.
Iain
More information about the Digitalmars-d
mailing list