2013-11-09 22 views
-3

运行有什么办法,当我运行与我的程序选项-ctime命令时,它告诉我下user节0秒?这是我们所称的程序不是CPU绑定的吗? 我有一个程序,我总是得到0.01秒。我已经做了一些优化,但仍然是一样的。我的程序运行时间从8秒左右降至0.01秒,但我无法进一步减少。 这是关于活动时间捕获的情况下采样间隔的事情吗?C:我可以让我的程序的外观在0秒

+2

我想一个人是在欺骗自己。非常奇怪的行为 –

+5

你的程序将需要0秒的唯一方法是如果你不运行该死的东西。这是什么样的问题? –

+0

“运行时间从8秒左右降至0.01秒” - 在优化之前它做了什么,以及之后做了什么? –

回答

1

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

由于time至少在Linux上显示系统时间和用户时间,用户时间是衡量代码实际运行的程度,而不是OS内核的代码,如果用户时间很长低于挂钟时间,这是粗略的证据表明您的程序“不受CPU限制”。

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

+0

好的。假设我正在使用getchar()从stdin读取字符。我不知道还有多少人物尚未到达。所以按照CPU绑定的定义,我不能让这个场景不受CPU限制,对吧?因为我必须保持循环直到EOF。 –

+0

@DiwakarSharma如果你正在从用户那里读取,它已经在程序的那个部分被非CPU绑定了,因为你受限于用户输入的速度,而不是CPU的速度。如果你可能从重定向到stdin的文件中读取数据,你应该考虑一些更高效的从stdin读取数据的块I/O方法。 –

+0

正如你所说,我正在将一个文件重定向到stdin,比如./a.out <文件 –

相关问题