C: 我可以让我的程序看起来在 0 秒内运行吗

Posted

技术标签:

【中文标题】C: 我可以让我的程序看起来在 0 秒内运行吗【英文标题】:C: Can I make my program look to be running in 0 secs 【发布时间】:2013-11-09 08:38:58 【问题描述】:

当我在我的程序上运行带有选项-ctime 命令时,有什么办法在user 部分下显示0 秒?这就是我们所说的程序不受 CPU 限制吗? 我有一个程序,我总是得到 0.01 秒。我做了一些优化,但还是一样。我已经将这个程序的运行时间从大约 8 秒降低到 0.01 秒,但我无法进一步减少。 这与活动时间捕获上下文中的采样间隔有关吗?

【问题讨论】:

我想一个人是在欺骗自己。非常奇怪的行为 如果你不运行该死的东西,你的程序将花费 0 秒的唯一方法。这是什么问题? 'run time from 8secs down to 0.01 secs'——优化前做了什么,优化后又做了什么? @MartinJames 使用特里树给了我很多时间。 @ChrisHayes 这就是为什么我说'看起来'..有区别。这可能是由于小数位数太小以至于报告为 0。 【参考方案1】:

不,“不受 CPU 限制”意味着应用程序的性能受到其他因素的限制,通常受其正在执行的 I/O 量的限制。它并不指任何特定的运行时间,它只是意味着应用程序大部分时间都在等待 I/O 完成或其他事情。

因为time,至少在 Linux 上,显示系统时间和用户时间,并且用户时间是衡量你的代码实际运行的量,而不是操作系统内核的代码,如果你的用户时间是远低于挂钟时间,这是您的程序“不受 CPU 限制”的粗略证据。

这是一个奇怪的问题。但我想现在你知道你误解了“不受 CPU 限制”,就不需要回答了。

【讨论】:

Ok.. 假设我使用 getchar() 从标准输入读取字符。我不知道还有多少角色尚未到来。所以根据 CPU bound 的定义,我不能让这个场景不受 CPU bound,对吧?因为我必须一直循环到 EOF。 @DiwakarSharma 如果您从用户那里读取它已经在程序的该部分不受 CPU 限制,因为您受到用户打字速度的限制,而不是 CPU 的速度。如果您可能正在读取重定向到标准输入的文件,您应该考虑一些更有效的块 I/O 方法来从标准输入读取数据。 正如你所说,我正在将文件重定向到标准输入,例如 ./a.out 好的,那么你可以使用read代替getchar,例如。

以上是关于C: 我可以让我的程序看起来在 0 秒内运行吗的主要内容,如果未能解决你的问题,请参考以下文章

Web 进程在启动后 90 秒内未能绑定到 $PORT

让我的应用程序支持 iPhone 5 [关闭]

如何让我用 SysV 调用约定编译的 C 程序在 MinGW 下运行

QML 进度条不动

在我关闭它们后,通用对话控件似乎可以让我的程序继续运行

我需要让我的应用程序总是在后台运行。