gpt4 book ai didi

c++ - while 循环比 for 循环更有效。可能是什么原因?

转载 作者:行者123 更新时间:2023-11-30 02:25:44 24 4
gpt4 key购买 nike

我在做一个 LeetCode 挑战 ( here ) 是为了好玩,我很惊讶 while 循环比 for 循环更有效。我原以为编译器会生成相同的代码(也按照这些 question and answers ),但运行时间不同。

while 循环大约需要 3 毫秒,而 for 循环大约需要 6 毫秒。我重复了几次,好像经常这样。

不幸的是,我没有测试用例,也没有关于所用编译器、架构或优化集的任何信息。我认为这并不重要,因为这些程序几乎完全相同,并且肯定使用相同的编译器、体系结构和选项。

在这方面有什么想法或经验吗?

For循环:

vector<int> twoSum(vector<int>& numbers, int target) {
int upper = numbers.size() - 1;
int lower = 0;
int sum;

for (;lower<upper;) {
sum = numbers[lower] + numbers[upper];
if (sum == target) {
return vector<int> { lower+1, upper+1 };
} else if (sum > target) {
upper--;
} else {
lower++;
}
}
}

While 循环:

vector<int> twoSum(vector<int>& numbers, int target) {
int upper = numbers.size() - 1;
int lower = 0;
int sum;

while (lower<upper) {
sum = numbers[lower] + numbers[upper];
if (sum == target) {
return vector<int> { lower+1, upper+1 };
} else if (sum > target) {
upper--;
} else {
lower++;
}
}
}

最佳答案

您没有运行足够或足够长的测试,以毫秒为单位的基准很难验证。

更好的方法是比较生成的程序集:for-loop while-loop .这些片段是使用 g++ 6.3 以最大优化 (-O3) 编译的。从这里可以清楚地看出,根本没有性能差异,因为两者的装配完全相同。

关于c++ - while 循环比 for 循环更有效。可能是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787750/

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