相同的嵌套选择

时间:2010-10-05 17:57:08

标签: c++ performance

之间是否有任何性能差异:

size.width += this->font->chars[*ch].advance + this->font->chars[*ch].offset.x;

char_data *chars = this->font->chars;
while(...) {
   size.width += chars[*ch].advance + chars[*ch].offset.x;
}

在第一个例子中,它们总是在循环中读取变量(this-> font,font-> chars),或者它们是否被缓存?

1 个答案:

答案 0 :(得分:3)

这取决于您的编译器和优化设置。在最基本的层面上,第一个将会更慢,因为您正在进行额外的解除引用和访问操作。但实际上,优化器可以识别这些重复并消除它们。

要明确回答这个问题,你应该进行测试并比较两者,看看是否在运行时间方面存在统计上的显着差异。