之间是否有任何性能差异:
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),或者它们是否被缓存?
答案 0 :(得分:3)
这取决于您的编译器和优化设置。在最基本的层面上,第一个将会更慢,因为您正在进行额外的解除引用和访问操作。但实际上,优化器可以识别这些重复并消除它们。
要明确回答这个问题,你应该进行测试并比较两者,看看是否在运行时间方面存在统计上的显着差异。