william 发表于 2014-6-12 06:27:09

为什么Fortran里的时间函数CPU_TIME不准确?

我的做法
call cpu_time(tic)
!! my code
call cpu_time(toc)
print * , toc - tic
人工计时大约是15分钟,但CPU_TIME给的结果是5900多秒。

楚香饭 发表于 2014-6-12 06:48:05

因为这是 CPU 时间,而不是真实的消耗时间。

这两者有一定的差别,主要原因是:
1.操作系统会根据不同应用程序(进程)的需求来分配合适的CPU时间。你可以通过任务管理器来查看不同进程的CPU占有率。
2.如果程序具有多线程,则CPU时间会考虑多个线程的CPU占有率的总和。

CPU时间,更适合描述代码工作量。而消耗时间,往往与当时计算机运行环境(如其他线程或进程)有关。

如果你要知道具体的消耗时间,可使用 SYSTEM_CLOCK

william 发表于 2014-6-12 07:47:50

chuxf 发表于 2014-6-12 06:48
因为这是 CPU 时间,而不是真实的消耗时间。

这两者有一定的差别,主要原因是:


多谢!我现在改用date_and_time()了,感觉还行。

andy8496 发表于 2014-6-12 09:00:44

本帖最后由 andy8496 于 2014-6-12 09:13 编辑

chuxf 发表于 2014-6-12 06:48
因为这是 CPU 时间,而不是真实的消耗时间。

这两者有一定的差别,主要原因是:

我能不能这么理解:
程序实际的运行时间<=CPU_TIME统计的时间?

个人感觉CPU_TIME更华丽,因为统计可以精确到小数点后若干位,:-lol
另外,能否给个 SYSTEM_CLOCK的例子啊?看了下子程序的解释,啰里巴嗦的。

百事可乐 发表于 2014-6-12 09:35:33

实际时间大于cpu时间。因为还包括其他进程。例子可以看帮助文档。

百事可乐 发表于 2014-6-12 09:38:27

你的是多线程或者是并行程序?

岸边的鱼 发表于 2014-6-12 22:02:50

本帖最后由 岸边的鱼 于 2014-6-12 22:27 编辑

弱弱的问一句:这个cpu——time和你的计算机性能之间有没有关系?同样的程序在不同的计算机执行的话,计算出来的cpu_time是一样的吗?感觉应该是不一样的吧?

楚香饭 发表于 2014-6-12 22:17:46

岸边的鱼 发表于 2014-6-12 22:02
从来就没使用过这个函数,弱弱的问一句:这个cpu——time和你的计算机性能之间有没有关系?同样的程序在不 ...

有关系,不一样。

岸边的鱼 发表于 2014-6-12 22:24:58

本帖最后由 岸边的鱼 于 2014-6-12 22:27 编辑

chuxf 发表于 2014-6-12 22:17
有关系,不一样。再弱弱的追问一句,“同样的程序在同样的电脑上运行,得到的cpu_time就永远是一样的吗?

楚香饭 发表于 2014-6-12 22:30:02

岸边的鱼 发表于 2014-6-12 22:24
再弱弱的追问一句,“同样的程序在同样的电脑上运行,得到的cpu_time就永远是一样的吗? ...

也可能不一样。仔细看上面的帖子及回复
页: [1] 2
查看完整版本: 为什么Fortran里的时间函数CPU_TIME不准确?