gpt4 book ai didi

c++ - 多次调用索引运算符的性能

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

如果我们有如下代码:

my_struct {
string word;
int num;
}

vector<my_struct> vec1;

//initialize vec1 to 1000 my_struct's

for (int i = 0; i < 1000; i++) {

// in the loop body, is it faster to use vec1[i].word directly, or
//store it in a variable, like so (string temp = vec1[i].word)
//and use the variable to refer temp to instead refer to the word?
}

**编辑:以上假设在循环的每次迭代中必须多次访问单词特定索引处的单词

最佳答案

使用:string temp = vec1[i].word 你制作一个拷贝,所以它会更慢。

使用引用:string& temp = vec1[i].word 来防止拷贝对性能的影响(如果它可以使更多代码更易于阅读,我会这样做)。

根据您的实际操作,编译器可能会以完全相同的方式优化这些版本。在优化代码之前,我会专注于编写可读代码(但仍然尽量不要制作不必要的拷贝)。

编辑(奖励)

正如评论中指出的那样,如果您不打算修改字符串,最好编写 const string& temp = vec1[i].word。它会给编译器和 future 的读者一个关于您可以用您的引用做什么的提示。

关于c++ - 多次调用索引运算符的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35073601/

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