这是一个幼稚的问题。但仍然在问。。考虑以下代码:
func1(obj.state)
func2(obj.state)
func3(obj.state)
func4(obj.state)
用下面的代码替换上面的代码是否有任何性能改进,或者这根本无关紧要(现代编译器可以自己优化这些东西…?(
value = obj.state
func1(value)
func2(value)
func3(value)
func4(value)
若state是一个需要一些时间计算的大函数,那个么第二个代码肯定会有更好的性能。我在问这个案子什么时候只是一个州。
我想到这个是因为,在第一种情况下,它必须首先指向对象的引用,然后必须指向状态所指向的引用。但在第二种情况下,它可以直接指向由值指向的引用。这是在空间和时间之间的权衡。
这是否因语言而异?
问题是:如果结果不正确,更好的性能对你来说重要吗?
第一段代码对每个函数调用使用最新状态,第二段代码对所有调用使用相同状态。如果你知道状态没有改变,如果编译器不知道,那么第二个片段会更好。否则使用第一个。