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.



Reply via email to