gpt4 book ai didi

c++ - 为什么以下代码不确定?

转载 作者:行者123 更新时间:2023-12-02 10:01:37 25 4
gpt4 key购买 nike

我正在研究一些面试准备问题,我在C++中看到了这个问题,问为什么下面的代码是不确定的。我不知道为什么,而且网上似乎也没有任何东西可以解释。任何帮助,将不胜感激,谢谢!

void func(std::vector<int>& input) {
static int i = 0;
auto start = getTimestamp();
for (auto it = input.begin(); it != input.end(); it++) {
*it = i;
}
auto end = getTimestamp();
cout << start<< end<< input.size());
}

作为后续,另一个问题是:“getTimestamp()”如何影响时序测量?

最佳答案

该函数是确定性的,因为它总是以相同的方式修改其输入:将input清零。

但是,进程可能会交换出去,CPU时钟增加,时钟减少,高速缓存可能变热或变冷等等。有数百种原因导致一次代码运行得更快而另一次运行得慢。这使得每次运行所花费的时间不确定。

由于它显式打印出此计时信息,因此它是不确定的。

关于c++ - 为什么以下代码不确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62310967/

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