一个对象memory
有一个带有签名的方法
BinaryPattern const& getPattern(unsigned int index) const;
我在以下 for 循环中使用它:
for (unsigned int k = 0; k < memory->size(); k++) {
const BinaryPattern s = memory->getPattern(k);
w += s.at(i) * s.at(j);
}
这是非常缓慢的。令人惊讶的是,我发现以下内容要快得多:
for (unsigned int k = 0; k < memory->size(); k++) {
w += memory->getPattern(k).at(i) * memory->getPattern(k).at(j);
}
“getPattern()”不做任何计算,它几乎只是返回存储在向量中的模式。
为什么当我将引用存储在变量中时速度会慢得多?我最初这样做是为了加快速度,因为我预计两次检索引用会更慢。