Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
September 04, 2019 Adding minmaxElement to Phobos? | ||||
---|---|---|---|---|
| ||||
At https://stackoverflow.com/a/19954882/683710 I just learned the reason for C++11 having https://en.cppreference.com/w/cpp/algorithm/minmax_element Calculating the min and max simultaneously reduces the number of comparisons with 1/4. Should we add a minmaxElement alongside minElement and maxElement? |
September 05, 2019 Re: Adding minmaxElement to Phobos? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | On Wednesday, 4 September 2019 at 22:12:28 UTC, Per Nordlöw wrote:
> At
>
> https://stackoverflow.com/a/19954882/683710
>
> I just learned the reason for C++11 having
>
> https://en.cppreference.com/w/cpp/algorithm/minmax_element
>
> Calculating the min and max simultaneously reduces the number of comparisons with 1/4.
>
> Should we add a minmaxElement alongside minElement and maxElement?
The comments suggest that it doesn't have benefit in some cases. Can't be that hard to do a simple version and see if it has better performance.
|
September 05, 2019 Re: Adding minmaxElement to Phobos? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | On 9/5/19 12:12 AM, Per Nordlöw wrote:
> At
>
> https://stackoverflow.com/a/19954882/683710
>
> I just learned the reason for C++11 having
>
> https://en.cppreference.com/w/cpp/algorithm/minmax_element
>
> Calculating the min and max simultaneously reduces the number of comparisons with 1/4.
>
> Should we add a minmaxElement alongside minElement and maxElement?
Looks like enough of an principled algorithm to make a valid addition. I think it was an interview question at Facebook at a point :o). (Hmmm... I looked quickly over the C++ sample implementation in the link above and it seems something is amiss.)
|
September 05, 2019 Re: Adding minmaxElement to Phobos? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | If someone does do this, an interesting comparison point is how it compares to auto r = reduce!(min, max)(data); On 9/5/19, 9:37 AM, "Digitalmars-d on behalf of Andrei Alexandrescu via Digitalmars-d" <digitalmars-d-bounces@puremagic.com on behalf of digitalmars-d@puremagic.com> wrote: On 9/5/19 12:12 AM, Per Nordlöw wrote: > At > > https://stackoverflow.com/a/19954882/683710 > > I just learned the reason for C++11 having > > https://en.cppreference.com/w/cpp/algorithm/minmax_element > > Calculating the min and max simultaneously reduces the number of > comparisons with 1/4. > > Should we add a minmaxElement alongside minElement and maxElement? Looks like enough of an principled algorithm to make a valid addition. I think it was an interview question at Facebook at a point :o). (Hmmm... I looked quickly over the C++ sample implementation in the link above and it seems something is amiss.) |
September 06, 2019 Re: Adding minmaxElement to Phobos? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | On Wednesday, 4 September 2019 at 22:12:28 UTC, Per Nordlöw wrote:
> At
>
> https://stackoverflow.com/a/19954882/683710
>
> I just learned the reason for C++11 having
>
> https://en.cppreference.com/w/cpp/algorithm/minmax_element
>
> Calculating the min and max simultaneously reduces the number of comparisons with 1/4.
>
> Should we add a minmaxElement alongside minElement and maxElement?
Side note: a stride of two as in the StackOverflow example code would be suboptimal as this should prevent vectorization of the loop. The stride probably needs to be the width of a SIMD register to gain any advantage over the naive loop.
|
Copyright © 1999-2021 by the D Language Foundation