[ https://issues.apache.org/jira/browse/STDCXX-335?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12474290 ]
Martin Sebor commented on STDCXX-335: ------------------------------------- See also this Sun C++ compiler bug for some relevant detail: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6498247 > std::min() suboptimal > --------------------- > > Key: STDCXX-335 > URL: https://issues.apache.org/jira/browse/STDCXX-335 > Project: C++ Standard Library > Issue Type: Bug > Components: 25. Algorithms > Affects Versions: 4.1.3 > Environment: gcc 3.2.3, x86 Linux > Reporter: Mark Brown > > I don't know if it's the compiler that's generating worse code for the stdcxx > version of min or if the function is not implemented as efficiently as it > could be but the disassembly for the two functions below shows that my_min() > is one instruction shorter than test_min(): > #include <algorithm> > int test_min (int x, int y) { return std::min (x, y); } > int my_min (int x, int y) { return x < y ? x : y; } > _Z8test_minii: > pushl %ebp > movl %esp, %ebp > movl 12(%ebp), %eax > cmpl %eax, 8(%ebp) > jg .L2 > leal 8(%ebp), %eax <<< extra load? > .L4: > movl (%eax), %eax > leave > ret > _Z6my_minii: > pushl %ebp > movl %esp, %ebp > movl 12(%ebp), %eax > cmpl 8(%ebp), %eax > jle .L6 > movl 8(%ebp), %eax > .L6: > leave > ret -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.