这似乎是一个关于关于效率与到底什么才是好代码的问题,我有几个看法:
1) 考虑码效率时,“省小钱不如省大钱”
O(n)规则告诉我们,当n变的很大时,O(cn) = O(n)
for(item in items) {
do_something(item)
}
这里,do_something的固定时间快点慢点无所谓,大多情况下不会有实际差别。但假如do_something的效率是跟items.size一起增长的,n只要变的很大,再快的电脑也要完蛋。
2) 在同样时间复杂度的情况下,程序员效率比CPU效率重要的多
阅读流畅,容易维护的代码才是好代码。不要为了一些渺小的“效率提升”而把代码写成案例里面那样。别忘了,计算程序员效率的时候除了第一次写代码的时间,还要算上未来每次维护的时间。不合常理的代码每次更新,重构,找bug时都会麻烦一点,累计下来是很不划算的。
3) 现代compiler(编译器)比你聪明
有些同学喜欢用一些语言风格上的小技巧去提高效率。在学习的时候玩弄一下不是坏事。但花费时间去做编译器该做的事情是很愚蠢的。现代编译器是超级强大的,可以在很多个不同的层次上做各种各样的优化。人手动能做的其实很少,而且经常会弄巧成拙。用2B代码来“帮助”你的编译器,就好像买辆法拉利然后站在车外帮它往前推一样