Just playing with compiler explorer to see assembly line count.

SrMordred patric.dexheimer at gmail.com
Tue Oct 3 14:07:39 UTC 2017


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).

But my big surprise was with .filter.





More information about the Digitalmars-d mailing list