我已经开始阅读算法,我一直想知道,在处理相同类型的原语时,哪个是更昂贵的操作、赋值或比较?这在语言之间是否有很大差异?
cmsjr
问问题
3172 次
2 回答
10
于 2009-03-09T19:59:29.627 回答
7
微优化几乎总是错误的做法。除非程序运行得太慢,否则甚至不要从它开始,并且您使用分析器来确定慢速部分的确切位置。
一旦你这样做了,我的建议是看看改进代码和数据的局部性,因为缓存未命中几乎肯定比次优指令更糟糕。
这样做后,在相当奇怪的情况下,您可以使用基于分配或基于比较的方法,尝试两者并计时。微优化是一场数字游戏。如果数字不够好,找出原因,然后验证你所做的是否真的有效。
那么,比较是什么意思?条件跳转会给任何模糊不清的现代处理器带来问题,但不同的处理器做不同的事情,并且不能保证任何给定的处理器都会减慢速度。此外,如果其中任何一个导致缓存未命中,那么无论如何这可能是较慢的一个。
最后,语言通常被编译成机器代码,像比较和赋值这样的简单事情通常会被编译成相同的。最大的区别在于 CPU 的类型。
于 2009-03-09T20:07:30.340 回答