声明一个变量并使用它是否比每次获取变量具有更好的性能



这是一个幼稚的问题。但仍然在问。。考虑以下代码:

func1(obj.state)
func2(obj.state)
func3(obj.state)
func4(obj.state)

用下面的代码替换上面的代码是否有任何性能改进,或者这根本无关紧要(现代编译器可以自己优化这些东西…?(

value = obj.state
func1(value)
func2(value)
func3(value)
func4(value)

若state是一个需要一些时间计算的大函数,那个么第二个代码肯定会有更好的性能。我在问这个案子什么时候只是一个州。

我想到这个是因为,在第一种情况下,它必须首先指向对象的引用,然后必须指向状态所指向的引用。但在第二种情况下,它可以直接指向由值指向的引用。这是在空间和时间之间的权衡。

这是否因语言而异?

问题是:如果结果不正确,更好的性能对你来说重要吗?

第一段代码对每个函数调用使用最新状态,第二段代码对所有调用使用相同状态。如果你知道状态没有改变,如果编译器不知道,那么第二个片段会更好。否则使用第一个。

最新更新