【问题标题】:How to work out execution time and real time of algorithm如何计算算法的执行时间和实时性
【发布时间】:2013-03-14 12:54:38
【问题描述】:

你如何使用clock()计算出程序的真实世界时间和执行时间?

【问题讨论】:

  • 您的问题不清楚。您是在问如何确定一段代码运行需要多长时间?
  • 是的,我需要知道如何计算出我的代码运行所需的真实时间
  • 鉴于计算机拥有的任何时间源都可能被篡改,您几乎无法可靠地做到这一点。您可以通过在启动计算之前和完成之后立即捕获系统时间并从最后一个减去第一个来获得粗略的估计。
  • 您打算使用哪个操作系统? Win32 和 POSIX API 完全不同...
  • 在 unix 下,您可以“计时”您的可执行文件,这可以让您粗略估计不同的经过时间。 (所以获取时间实用程序的来源并查看它)

标签: c algorithm real-time


【解决方案1】:

如果 clock() 是必需的,我无能为力。如果“获取执行时间”部分是您想要的,您可以查看 gcc(gnu 编译器)的分析选项。您将代码链接到专门编译的库,这些库提供分析信息。

【讨论】:

    【解决方案2】:

    使用clock() 来查找程序的执行时间可能不是一个好主意。

    但我可以建议一种可能的解决方案来解决您的问题。您必须在每个将正在运行的进程发送到等待状态或阻塞状态的 C 语句之前和之后使用 clock() 来测量时间。例如,您的程序可能正在等待子进程终止或阻塞,直到用户输入一些数据。因此,在这种情况下,您的程序没有使用 CPU。所以你必须从程序的总运行时间中扣除这段时间。

    int sum,n1,n2;
    clock_t t1, t2, t3, t4;
    long int x;
    double dur1,dur2;
    
    t1 = clock();
    
    printf("\nEnter two numbers:\n");
    
    t2 = clock();
    
    scanf("%d%d",&n1,&n2);
    
    t3 = clock();
    
    sum= n1 + n2;
    
    printf("\nSum is %d\n",sum);
    
    t4 = clock();
    
    dur1 = ( double ) ( t4 - t1 ) / CLOCKS_PER_SEC;
    
    dur2 = ( double ) ( ( t4 - t1 ) - ( t3 - t2 ) ) / CLOCKS_PER_SEC;
    
    printf( "\nThe Total Running time of the proces is %lf\n", dur1 ); 
    printf( "\nThe CPU time taken by the proces is %lf\n", dur2 ); 
    

    当然,对于任意大的程序,这个程序只会给出粗略的估计。对于小型程序,估计并非全部有用。

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      相关资源
      最近更新 更多