Xia*_*ian 13 performance anti-patterns
我目前的工作谁是客户吓呆了改变,因为"业绩原因"烂未检验的和未维护的代码.很明显,存在许多错误观念,而且理由不被理解,而只是盲目信仰.
我遇到的一个这样的反模式是需要标记尽可能多的类作为密封的内部 ...
*重新编辑:我认为将所有内容标记为内部密封(在C#中)作为过早优化.*
我想知道人们可能意识到或遇到的其他一些性能反模式是什么?
Kev*_*Kev 17
可重复使用.
我曾经一直这样做,认为我在声明上节省了几个周期并减少了内存占用.与调试代码的方式相比,这些节省的成本微不足道,特别是如果我最终移动代码块并且关于起始值的假设发生了变化.
我遇到过的一个问题就是将硬件投入到严重损坏的代码中,试图使其足够快,这与Jeff Atwood在Rulas评论中提到的文章相反.我不是在谈论通过在更快的硬件上运行使用基本的,正确的算法加速使用优化算法的加速.我正在谈论当O(n log n)算法在标准库中时,使用不明显正确的自制O(n ^ 3)算法.还有手工编码例程之类的东西,因为程序员不知道标准库中有什么.那个人很沮丧.
使用#defines而不是函数来避免函数调用的惩罚.我已经看到了代码,其中扩展的定义结果是生成巨大且非常慢的代码.当然也不可能调试.内联函数是实现此目的的方法,但也应谨慎使用它们.
我已经看到了一些代码,其中独立测试已经转换为可以在switch语句中使用的单词中的位.切换可以非常快,但是当人们将一系列独立测试转换为位掩码并开始编写256个优化特殊情况时,他们最好有一个非常好的基准测试证明这可以带来性能提升.从维护的角度来看,这真的是一种痛苦,独立处理不同的测试会使代码更小,这对性能也很重要.
归档时间: |
|
查看次数: |
2149 次 |
最近记录: |