我不是一个程序员,但我最近对编码很感兴趣,开始自己学习C,然后我开始用它解决ProjectEuler.net的问题。
我在编写的每个源代码末尾都添加了这两行代码:
printf ( "The number you are looking for is %d", 0 );
printf ( "\n... and took %d / %d seconds to compute that", clock(), CLOCKS_PER_SEC );
..。用我需要的数字代替零作为答案。
问题是,无论我如何优化我的工作,printf从不显示少于50个时钟,即使我使用一个完全空白的源代码,除了这两个操作之外,它仍然显示50个时钟。是上面的#include's花了这50个钟,还是别的什么东西?
我的一些已填充的源代码也显示了50个时钟,所以.我不知道在这里可以推断出什么,我写的一些东西真的需要0毫秒才能解决吗?
发布于 2013-09-17 21:46:47
好吧,我自己解决了问题。最近,我转而使用崇高文本编写源代码C,并编写了一个批处理文件,该文件使用Visual 2012的.exe工具从.c文件编译一个cl.exe
这导致我在Visual 2012上使用了实际的..exe,而不是本地Windows调试器。
这就是我意识到+50时钟只发生在本地Windows调试器上。我刚刚编写的代码显示;-0~1个时钟,当我启动.exe时,我通过崇高文本+ batchCompiler生成-0~1个时钟当我启动Visual 2012每次使用本地Windows在%ProjectDirectory%\Debug\
下生成自己的.exe时,当我只是查看Visual 2012的本地Windows时,会显示50~51个时钟。
所以..。是的,它只是关于Visual 2012辅助执行
发布于 2013-08-31 21:44:41
您的系统时钟“滴答”频繁(可能每50毫秒一次?)而不是不停地跑。因此,clock()
函数度量进程自启动以来消耗的这些“滴答”数。这种方法并不真正适用于测量短于一个滴答的时间。
如果您想要更高的精度,您将不得不使用高分辨率计时器。
https://stackoverflow.com/questions/18553080
复制相似问题