gpt4 book ai didi

c++ - 将静态类成员复制到局部变量进行优化

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:52 25 4
gpt4 key购买 nike

在浏览开源代码(来自 OpenCV)时,我在一个方法中发现了以下类型的代码:

// copy class member to local variable for optimization
int foo = _foo; //where _foo is a class member

for (...) //a heavy loop that makes use of foo

来自 another question所以我得出结论,关于是否这实际上需要完成或由编译器自动完成的答案可能取决于编译器/设置。

我的问题是,如果 _foo 是一个 static 类成员,是否会有任何不同?这种手动优化是否还有意义,或者访问静态类成员并不比访问局部变量更“昂贵”?

附言- 我问是出于好奇,而不是为了解决特定问题

最佳答案

访问属性意味着取消引用对象,以便访问它。

由于属性在执行过程中可能会发生变化(读取线程),编译器会在每次访问该值时从内存中读取该值。

使用局部变量将允许编译器为该值使用一个寄存器,因为它可以安全地假设该值不会从外部改变。这样,该值仅从内存中读取一次。

关于你关于静态成员的问题,它是一样的,因为它也可以被另一个线程改变,例如。编译器还需要每次从内存中读取值。

关于c++ - 将静态类成员复制到局部变量进行优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14424526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com