c++ - clock() - 循环前后相同的值

标签 c++

我有这个简单的代码:

#include <iostream>
#include <ctime>

using namespace std;

int main(int argc, char **argv)
{
    cout << clock() << endl;

    for(int i = 0; i < 100; i++){
        int k = i * i;
    }

    cout << clock() << endl;

    return 0;
}

我的问题是两个 clock() 调用都返回相同的值。如果 clock() 返回程序使用的处理器时间,执行 100 次乘法运算是否需要一些处理器时间?在我的例子中,两个调用都返回 0。

我在 Ubuntu 上,使用 GCC 编译。

最佳答案

未指定时钟的分辨率;最早 在我使用它的系统中,它是 20 毫秒(1/50 一秒钟,对应于我居住的线路频率)。 现代 Unix 要求将 CLOCKS_PER_SECOND 定义为 1000000,但是还是没有对相关的要求 实际分辨率。一百次乘法, 一台现代机器,可能不会超过几个 微秒,如果那样的话。远低于典型分辨率 时钟

此外,当然,编译器可以完全优化循环,因为它对程序的可观察行为没有影响。

关于c++ - clock() - 循环前后相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24883709/

相关文章:

c++ - 为什么 io_context 在我的 boost asio 协程服务器中被浸透

c++ - 如何在 .cpp 文件中使用 Cuda 数据结构

c++ - 指定cl.exe的命令行C++版本(Visual Studio代码)

c++ - 在 pragma 并行指令中将数组声明为共享变量并稳定代码

c++ - 如何初始化对 std::ofstream 的静态引用?

c++ - 具有相等参数的 std::vector::erase

c++ - 删除指针 vector 时调试断言失败 C++

c++ - 如何将 dll 添加到 VC++ 2008 项目

c++ - 未解析的外部符号(OpenGL 和 C++)

c++ - 调用函数时防止转换 int