什么更昂贵,比较或分配?

cms*_*sjr 15 comparison variable-assignment

我已经开始阅读算法了,我一直想知道,当处理相同类型的原语时,这是更昂贵的操作,分配还是比较?语言之间的差异很大吗?

Pyr*_*cal 9

你怎么看?

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

但你为什么要关心呢?你不应该关心这个级别的表现.优化Big-O

  • 您可能有兴趣注意这本书主要是关于Big-O的.我为什么要在乎?因为我不知道. (3认同)
  • 我同意这是一个荒谬的优化,但了解每个优化的工作原理并非毫无价值。我给OP和这个回复+1。 (3认同)

Dav*_*ley 7

微优化几乎总是错误的做法.除非程序运行得太慢,否则甚至不要启动它,并使用分析器确定慢速部件的确切位置.

一旦你完成了这个,我的建议是看到改进代码和数据的位置,因为缓存未命中几乎肯定比次优指令更糟糕.

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

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

最后,语言通常被编译为机器代码,而比较和赋值等简单的东西通常会被编译为相同的.最大的区别将是CPU的类型.

  • 显然这是一个假设的问题,因此提供有关微观优化的讲座是不合适的。 (2认同)