Fel*_*bek 7 c# java algorithm performance
我的老板告诉我,他从一本书中学到了快速的VB6算法,并且写东西的最短方式不一定是最快的(例如,内置方法有时比自写方法慢,因为它们进行各种检查或unicode转换,在你的情况下可能没有必要).
现在我想知道,是否有一个关于快速不同结构的信息的网站有各种语言,尤其是.Java/C#/ Python/...(也是C++,但有很多编译器可能有很多不同).
例如,之间存在差异
if (a()) b();
Run Code Online (Sandbox Code Playgroud)
和
a() && b();
Run Code Online (Sandbox Code Playgroud)
另一个例子:a = a * 4
可能编译成相同的代码a <<= 2
吗?
我可以自己测试一下,当然,写两个然后运行它们100000次并比较运行时,但我也想学习写东西的新方法,甚至可能是我以前没有考虑过的东西.谢谢你的回答!
if (a()) b();
和之间有区别a() && b();
吗?
是的,可读性.第一个是关于意图的更清楚.
是
a = a * 4
可被编译到相同的代码a <<= 2
?
很可能是的.但即使它们最终成为不同的CPU指令,时间上的差异也会非常小,并且依赖于之前和之后的指令.
现代CPU的微优化是
总之,首先编写可读代码.如果遇到性能问题,请先进行配置文件和测量.
您应该担心使用正确的算法,而不是阅读超出需要的集合等.但是在指令/语句级别,您和实际执行的内容之间有太多层(编译器,抖动,流水线CPU).