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

Performance 声明一个变量并使用它是否比每次都获取该变量具有更好的性能?,performance,Performance,这是一个幼稚的问题。但还是问。。考虑到以下准则: func1(obj.state) func2(obj.state) func3(obj.state) func4(obj.state) 用下面的代码替换上面的代码是否有任何性能改进,或者根本没关系(现代编译器可以自己优化这些东西……?) 若state是一个大函数,需要一些时间来计算,那个么第二个代码肯定会有更好的性能。我在问这个案子什么时候只是一个状态 我想到这一点是因为,在第一种情况下,它首先指向对象的引用,然后指向状态所指向的引用。但在第二

这是一个幼稚的问题。但还是问。。考虑到以下准则:

func1(obj.state)
func2(obj.state)
func3(obj.state)
func4(obj.state)
用下面的代码替换上面的代码是否有任何性能改进,或者根本没关系(现代编译器可以自己优化这些东西……?)

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

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


这在不同的语言中是否也有所不同?

问您:如果结果不正确,更好的性能对您是否重要


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

问您:如果结果不正确,更好的性能对您是否重要


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

大多数编程语言的设计都是为了将访问成员的成本降至最低。某些编译器可能会优化后续访问。唯一确定的方法是分析这两段代码,看看哪一段性能更好(如果有的话)。不同语言的性能可能不同,但大多数现代编译器都足够聪明,可以优化上面的代码,因为您不断要求相同内存地址的值。此外,除非您确定了需要解决的实际性能问题,否则您根本不应该担心这一点。这还取决于
obj
。编译器能否证明函数不修改对象状态,其他线程也不修改?如果
obj
是一个局部变量,这就更容易了。大多数编程语言的设计都是为了使访问成员的成本降到最低。某些编译器可能会优化后续访问。唯一确定的方法是分析这两段代码,看看哪一段性能更好(如果有的话)。不同语言的性能可能不同,但大多数现代编译器都足够聪明,可以优化上面的代码,因为您不断要求相同内存地址的值。此外,除非您确定了需要解决的实际性能问题,否则您根本不应该担心这一点。这还取决于
obj
。编译器能否证明函数不修改对象状态,其他线程也不修改?如果
obj
是一个局部变量,这就更容易了。
value = obj.state
func1(value)
func2(value)
func3(value)
func4(value)