21

我已经开始阅读算法,我一直想知道,在处理相同类型的原语时,哪个是更昂贵的操作、赋值或比较?这在语言之间是否有很大差异?

4

2 回答 2

10

你怎么看?

在最低级别,一个执行两次读取,另一个执行读取和写入。

但你为什么要真正关心?你不应该关心这个级别的性能。针对Big-O进行优化

于 2009-03-09T19:59:29.627 回答
7

微优化几乎总是错误的做法。除非程序运行得太慢,否则甚至不要从它开始,并且您使用分析器来确定慢速部分的确切位置。

一旦你这样做了,我的建议是看看改进代码和数据的局部性,因为缓存未命中几乎肯定比次优指令更糟糕。

这样做后,在相当奇怪的情况下,您可以使用基于分配或基于比较的方法,尝试两者并计时。微优化是一场数字游戏。如果数字不够好,找出原因,然后验证你所做的是否真的有效。

那么,比较是什么意思?条件跳转会给任何模糊不清的现代处理器带来问题,但不同的处理器做不同的事情,并且不能保证任何给定的处理器都会减慢速度。此外,如果其中任何一个导致缓存未命中,那么无论如何这可能是较慢的一个。

最后,语言通常被编译成机器代码,像比较和赋值这样的简单事情通常会被编译成相同的。最大的区别在于 CPU 的类型。

于 2009-03-09T20:07:30.340 回答