系统库开发人员关注的不仅仅是性能:
正确性和标准合规性:至关重要!
一般用途:除非它们使大多数用户受益,否则不会引入任何优化.
可维护性:良好的手写汇编代码可以更快,但你没有看到太多.为什么?
可移植性:体面的库应该可以移植到不仅仅是Windows/x86/32bit.
您看到的许多优化黑客违反了上述一项或多项要求.此外,当下一代CPU即将到来时,无用甚至破坏的优化也不是一件值得欢迎的事情.
如果您没有关于它的真实有用的探查器证据,请不要打扰优化系统库.如果你这样做,首先要处理你自己的算法和代码,无论如何......
编辑:
我还应该提到其他一些包罗万象的问题:
利润/结果比的成本/努力:优化是一项投资.其中一些看似令人印象深刻的泡沫.从长远来看,其他人更深入,更有效.必须始终考虑它们的益处与开发和维护它们的成本有关.
营销人员:无论你怎么想,你最终会做他们想做的事情 - 或者认为他们想要的.
中的一些算法<algorithm>可以针对 进行优化vector<bool>::[const_]iterator。这些包括:
find
count
fill
fill_n
copy
copy_backward
move // C++0x
move_backward // C++0x
swap_ranges
rotate
equal
Run Code Online (Sandbox Code Playgroud)
我可能错过了一些。但上述所有算法都可以优化为一次处理许多位,而不是一次只处理一位(就像简单的实现一样)。
我怀疑大多数 STL 实现都严重缺少这一优化。这一项也不缺少: