我开始阅读Algorithms并且在处理相同类型的原语时,我一直在想,这是更昂贵的操作,分配还是比较?语言之间的差异很大吗?
答案 0 :(得分:9)
答案 1 :(得分:6)
微优化几乎总是错误的做法。除非程序运行得太慢,否则甚至不要启动它,并且使用分析器确定慢速部件的确切位置。
一旦你完成了这个,我的建议是看看改进代码和数据的位置,因为缓存未命中几乎肯定比次优指令更差。
这样做,在相当奇怪的情况下,您可以使用基于任务或基于比较的方法,尝试两者并计时。微优化是一种数字游戏。如果数字不够好,找出原因,然后验证你所做的事情是否有效。
那么,比较是什么意思?有条件的跳转会给任何模糊的现代处理器带来问题,但是不同的处理器会做不同的事情,并且无法保证任何给定的处理器都会减慢速度。此外,如果其中一个导致高速缓存未命中,那么无论如何都可能是较慢的。
最后,语言通常被编译为机器代码,比较和赋值等简单的东西通常会编译成相同的。最大的区别将是CPU的类型。