Fortran Coder

标题: 为什么Fortran里的时间函数CPU_TIME不准确? [打印本页]

作者: william    时间: 2014-6-12 06:27
标题: 为什么Fortran里的时间函数CPU_TIME不准确?
我的做法
[Fortran] 纯文本查看 复制代码
call cpu_time(tic)
!! my code
call cpu_time(toc)
print * , toc - tic

人工计时大约是15分钟,但CPU_TIME给的结果是5900多秒。


作者: 楚香饭    时间: 2014-6-12 06:48
因为这是 CPU 时间,而不是真实的消耗时间。

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

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

如果你要知道具体的消耗时间,可使用 SYSTEM_CLOCK
作者: william    时间: 2014-6-12 07:47
chuxf 发表于 2014-6-12 06:48
因为这是 CPU 时间,而不是真实的消耗时间。

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

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

作者: andy8496    时间: 2014-6-12 09:00
本帖最后由 andy8496 于 2014-6-12 09:13 编辑
chuxf 发表于 2014-6-12 06:48
因为这是 CPU 时间,而不是真实的消耗时间。

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

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

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

作者: 百事可乐    时间: 2014-6-12 09:35
实际时间大于cpu时间。因为还包括其他进程。例子可以看帮助文档。
作者: 百事可乐    时间: 2014-6-12 09:38
你的是多线程或者是并行程序?
作者: 岸边的鱼    时间: 2014-6-12 22:02
本帖最后由 岸边的鱼 于 2014-6-12 22:27 编辑

弱弱的问一句:这个cpu——time和你的计算机性能之间有没有关系?同样的程序在不同的计算机执行的话,计算出来的cpu_time是一样的吗?感觉应该是不一样的吧?
作者: 楚香饭    时间: 2014-6-12 22:17
岸边的鱼 发表于 2014-6-12 22:02
从来就没使用过这个函数,弱弱的问一句:这个cpu——time和你的计算机性能之间有没有关系?同样的程序在不 ...

有关系,不一样。
作者: 岸边的鱼    时间: 2014-6-12 22:24
本帖最后由 岸边的鱼 于 2014-6-12 22:27 编辑
chuxf 发表于 2014-6-12 22:17
有关系,不一样。
再弱弱的追问一句,“同样的程序在同样的电脑上运行,得到的cpu_time就永远是一样的吗?
作者: 楚香饭    时间: 2014-6-12 22:30
岸边的鱼 发表于 2014-6-12 22:24
再弱弱的追问一句,“同样的程序在同样的电脑上运行,得到的cpu_time就永远是一样的吗? ...

也可能不一样。仔细看上面的帖子及回复
作者: 岸边的鱼    时间: 2014-6-12 22:35
chuxf 发表于 2014-6-12 22:30
也可能不一样。仔细看上面的帖子及回复

额,又看了一遍,发现我就没理解cpu——time是个啥,引用你的一句话“CPU时间,更适合描述代码工作量。”
现在理解为:,cpu——time和计算机执行的时间不是一回事,而是由你的代码的工作量决定的。不知道是不是理解的到位。
作者: mangix2010    时间: 2014-6-13 22:55
那个好像一般是用秒做计量的,有时候这个差别看不出来的




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2