为什么以下代码是不确定的?
Why is the following code non-deterministic?
我正在复习一些面试准备问题,我在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 时钟启动,时钟关闭,缓存可以是热的或冷的,等等。有数百种原因可以解释为什么一次代码可能会运行得更快,另一次可能会运行得更慢。这使得每次运行所花费的时间不确定。
由于它显式打印出此计时信息,因此它是不确定的。
相关文章:
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 不确定如何装饰我的C++库代码以在 C 中使用
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 为什么以下代码是不确定的?
- 我不确定为什么代码没有运行,它在编译时抛出错误,说它无法找到 PrintArray()
- 代码输出随机符号,我不确定出了什么问题
- 存在内存访问异常,但我不确定我的代码中出了什么问题
- 所以我想出了他的代码,但我不确定如何继续删除功能?
- 不确定输出双精度或整数的代码行
- 此代码,为什么必须显示不确定的行为
- 为什么在const和非const方法中删除代码重复不是不确定的行为
- C Linux代码破坏Windows构建,因为缺少标头意味着功能不确定
- 在我的代码覆盖本身时遇到麻烦,我不确定为什么
- 在代码块中的SDL_SHOWSIMPLEMESSAGEBOX中,令人困惑的错误,不确定的引用和未定义的引用
- 不确定,为什么此代码,同时扫描动态分配的数组导致分段错误
- 学习左值和右值,但不确定为什么这个代码有效
- 如果没有使用使用代码的链接,则对G 中的静态常规成员的不确定引用
- 不确定为什么代码不能C++简单
- 遗留代码似乎溢出了,我不确定
- C++:不确定代码是否可多线程