gpt4 book ai didi

c++ - 类方法变量,如果我将它们存储在类本身中会更快吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:09:15 24 4
gpt4 key购买 nike

考虑下一段代码

class foo {
public:
void f() {
char buffer[1024];
memset(buffer, NULL, 1024);
read_some_input_to_buffer(buffer, 1024);
}
};

class bar {
public:
void f() {
memset(_myPrivateBuffer, NULL, 1024);
read_some_input_to_buffer(_myPrivateBuffer, 1024);
}

private:
char _myPrivateBuffer[1024];
};

bar::f() 会比 foo::f() 运行得更快吗?如我所见,缓冲区已经存在于 bar 中,因此编译器不会在调用函数时在堆栈上为其分配内存?还是我错了,内存已经在 foo::f() 被调用之前分配了?

最佳答案

is it faster if I store them in the class itself?

so the compiler won't allocate memory for it on the stack

在栈上分配内存相当于移动栈指针。更重要的是,堆栈总是热的,你获得的内存比任何远堆分配的内存更有可能在缓存中。在 Which is faster: Stack allocation or Heap allocation 中阅读更多内容.


PS:小心不要成为过早优化的牺牲品。

关于c++ - 类方法变量,如果我将它们存储在类本身中会更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468458/

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