我理解大部分的微优化,但它们真的有用吗?
Exempli特惠:不这样做++i
,而不是i++
,或while(1)
还是for(;;)
真的导致性能改进(在内存指纹或CPU周期)?
所以问题是,在C中可以进行哪些微优化?它们真的有用吗?
你应该依靠你的编译器来优化这些东西.专注于使用适当的算法并编写可靠,可读和可维护的代码.
tclhttpd是一个用Tcl编写的网络服务器,它是最慢的脚本语言之一,设法胜过Apache,这是一个用C语言编写的网络服务器,是所谓的最快的编译语言之一,当时我确信微观优化在比较中显得相形见绌.使用更快的算法/技术*.
除非您可以在调试器中证明它是问题,否则永远不要担心微优化.即便如此,我还是建议先来这里来询问是否一个好主意,希望有人能说服你不要这样做.
这是违反直觉的,但通常通过添加代码而不是删除代码来优化代码,尤其是紧密嵌套循环或递归.游戏行业已经提出了无数的技巧来加速使用过滤器的嵌套循环以避免不必要的处理.这些过滤器比i ++和++ i之间的差异添加了更多的指令.
*注意:从那时起我们学到了很多东西.由于产生的线程很昂贵,因此慢速脚本语言的性能优于已编译的机器代码,这导致了lighttpd,NginX和Apache2的发展.