标准库中的哪些功能可以通过编程黑客更快地实现?

bar*_*noz 5 c++ algorithm math stl

我最近读过一篇关于快速sqrt计算的文章.因此,我决定让SO社区及其专家帮助我找出哪些STL算法或数学计算可以通过编程黑客更快地实现?

如果您可以提供示例或链接,那将是很棒的.

提前致谢.

thk*_*ala 9

系统库开发人员关注的不仅仅是性能:

  • 正确性和标准合规性:至关重要!

  • 一般用途:除非它们使大多数用户受益,否则不会引入任何优化.

  • 可维护性:良好的手写汇编代码可以更快,但你没有看到太多.为什么?

  • 可移植性:体面的库应该可以移植到不仅仅是Windows/x86/32bit.

您看到的许多优化黑客违反了上述一项或多项要求.此外,当下一代CPU即将到来时,无用甚至破坏的优化也不是一件值得欢迎的事情.

如果您没有关于它的真实有用的探查器证据,请不要打扰优化系统库.如果你这样做,首先要处理你自己的算法和代码,无论如何......

编辑:

我还应该提到其他一些包罗万象的问题:

  • 利润/结果比的成本/努力:优化是一项投资.其中一些看似令人印象深刻的泡沫.从长远来看,其他人更深入,更有效.必须始终考虑它们的益处与开发和维护它们的成本有关.

  • 营销人员:无论你怎么想,你最终会做他们想做的事情 - 或者认为他们想要的.


Joh*_*ing 7

对于特定的问题域,可能所有这些都可以更快地制作.

现在真正的问题是,你应该加速哪些更快?没有,直到剖析器告诉你.


How*_*ant 2

中的一些算法<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 实现都严重缺少这一优化。这一项也不缺少:

http://libcxx.llvm.org/