Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-335

std::min() suboptimal

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 4.1.3
    • 4.3.0
    • 25. Algorithms
    • None
    • gcc 3.2.3, x86 Linux

    • Inefficiency

    Description

      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

      Attachments

        Activity

          People

            Unassigned Unassigned
            mbrown Mark Brown
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 4h
                4h
                Remaining:
                Remaining Estimate - 4h
                4h
                Logged:
                Time Spent - Not Specified
                Not Specified