【问题标题】:execution time in C languageC语言执行时间
【发布时间】:2012-04-03 14:56:19
【问题描述】:

我用下面的代码计算了搜索函数的执行时间,单位是毫秒。

sBegin = clock();
searching();
sEnd = clock();
searchingTime = ((float)(sEnd-sBegin)/CLOCKS_PER_SEC)*1000;

结果例如是 952.000000。我想知道为什么小数点后的所有数字总是为零?我该如何解决?有没有更好的方法来计算 C 语言中的执行时间?

【问题讨论】:

  • 典型系统上的clock() 分辨率约为 10 或 20 毫秒。
  • 您的代码中缺少左括号。 (float)((sEnd-sBegin)/CLOCKS_PER_SEC)*1000((float)(sEnd-sBegin)/CLOCKS_PER_SEC)*1000 或 ...?
  • @undur_gongor:结果没有改变。

标签: c


【解决方案1】:

你在做整数除法,试试

    searchingTime = ((sEnd-sBegin)/(float)CLOCKS_PER_SEC)*1000;

您可以在其他地方放置演员并获得相同的东西,这只是一种可能性

编辑:

在这里,查看问题herehere。我认为这些可能会回答您的问题(基本上看起来clock() 不会削减它)。我上面的回答是错误的。

【讨论】:

  • 我不想得到同样的东西。我想要小数点后的数字。我的程序中小数点后的数字始终为零。
  • 我的意思和我的例子一样,和你做整数除法时的答案不一样
  • @GuyGreer:这不是原因(请参阅更正的问题)。无论如何,952 不是 1000 的倍数。
  • @undur_gongor:我把丢失的放在了正确的位置,但它并没有造成浮动分割。
  • @GHAZALRAHBARI:您已经在进行浮点除法了。这不是问题。你读过 Kerrek SB 的评论吗?
【解决方案2】:

Kerrek SBcomment

这取决于clock 的分辨率。如果它返回精度为 1 毫秒的值,则无法测量小于 1 毫秒的差异。您的系统上似乎就是这种情况。

没有更好的便携方式来测量时间。也许您的平台提供了特定的功能来获得更高分辨率的系统时间。

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 2021-07-22
    • 2020-02-26
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多