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

时间:2017-06-10 00:53:27

标签: c++ arrays performance function memory

考虑下一段代码

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()之前已经分配了内存?

1 个答案:

答案 0 :(得分:1)

  

如果我将它们存储在类本身中会更快吗?

即可。

  

所以编译器不会在堆栈上为它分配内存

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

PS:小心不要成为过早优化的受害者