digitalmars.D - Adding minmaxElement to Phobos?
- Per =?UTF-8?B?Tm9yZGzDtnc=?= (7/7) Sep 04 2019 At
- jmh530 (4/12) Sep 04 2019 The comments suggest that it doesn't have benefit in some cases.
- Andrei Alexandrescu (5/17) Sep 05 2019 Looks like enough of an principled algorithm to make a valid addition. I...
- Schrom, Brian T (22/22) Sep 05 2019 If someone does do this, an interesting comparison point is how it compa...
- Gregor =?UTF-8?B?TcO8Y2ts?= (5/13) Sep 06 2019 Side note: a stride of two as in the StackOverflow example code
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?
Sep 04 2019
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.
Sep 04 2019
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.)
Sep 05 2019
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.)
Sep 05 2019
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.
Sep 06 2019