c - 在 C 中限制程序的执行时间(蒙特卡罗技术)

标签 c execution-time montecarlo

我正在从事一个项目,该项目没有确定的算法来使用 C 语言解决。我正在使用蒙特卡罗技术来解决这个问题。而随机猜测的次数我想限制在用户指定的执行时间内。 这意味着我想充分利用用户定义的执行时间限制(作为命令行参数)来进行尽可能多的随机迭代。 我可以检查循环条件的执行时间吗?

for(trials=0;execution_time<specified_time;trials++)

如果是这样,我该怎么做? 或者如果还有其他方法,欢迎。谢谢。

附言我使用 Code Blocks 10.05 进行编码和 GNU 编译器。

最佳答案

是的,如果您的计算机上有足够细粒度的时钟(并且您有)。

  1. 记录模拟开始的时间。

  2. 对于循环中的每一次旅行,找到当前时间以及开始时间和现在之间的相应增量。如果该值大于限制,则停止。

如果您使用具有一秒粒度的 time(),请注意量化效果。如果用户说“1 秒”,如果您的程序在 T=N.999s 开始并在 T=(N+1).001s 停止,您可能会运行一小部分秒。任何量子都可能产生相同的效果,但由于微秒和纳秒是正常的亚秒级粒度,因此量子的大小不再是问题。

我知道的高分辨率时钟函数有:

  • clock_gettime() - POSIX(纳秒)
  • gettimeofday() - POSIX(微秒)
  • times() - Unix 系统 V(每秒 CLK_TCK)
  • ftime() - 古代 Unix(毫秒)
  • 时钟() - ISO C - (CLOCKS_PER_SEC)
  • time() - ISO C -(秒)

关于c - 在 C 中限制程序的执行时间(蒙特卡罗技术),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4705696/

相关文章:

c - 为什么当我再声明一个变量时这段代码会崩溃?

c# - 如何估计方法执行时间?

python - 为 Ising-/Potts-Model Monte-Carlo 加速 Python/Numpy 代码

random - 测试 PRNG 的质量

C:寻找最长的线

c - 函数调用是内存屏障吗?

c - Linux 中断与轮询

javascript - 如何优化这个 jquery 循环的执行时间?

c++ - for-lops 如何在 C++ 示例 : calculating hashes 中准确工作

graphics - 处理路径追踪中的点光源和精确反射