Re: Whats going onto the stack here?
"Igor Tandetnik" <itandetnik@mvps.org> wrote in message
news:%236nTumBYHHA.2556@TK2MSFTNGP02.phx.gbl...
Ben Voigt <rbv@nospam.nospam> wrote:
Where in the STL or Standard C++ Library documentation are any
performance guarantees made?
Pretty much everywhere. For example:
23.2.2.4 list operations
void sort();
template <class Compare> void sort(Compare comp);
29 Requires: operator< (for the first version, or comp (for the second
version) defines a strict weak ordering (25.3).
30 Effects: Sorts the list according to the operator< or a Compare
function object.
31 Notes: Stable: the relative order of the equivalent elements is
preserved. If an exception is thrown the order of the elements in the list
is indeterminate.
32 Complexity: Approximately NlogN comparisons, where N == size().
I see semantics discussed, with a correctness guarantee in the case that no
exceptions are thrown by the user-defined ordering. There's also a
complexity statement.
From the context of your original statement, it seems clear that you weren't
using the word performance in the sense of correctness, but in the sense of
throughput. I see no throughput guarantees. I don't even see mention of
what inputs cause best-case or worst-case throughput.
Sorting algorithms have performance that is highly data-dependent. There is
no one-size-fits-all algorithm for fast sorting, which is what you appear to
be claiming when you state that the STL (which implementation not specified)
is better for the task than a hand-picked algorithm.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925