#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>

#define BILLION  1000000000L;

int main( int argc, char** argv )
  {
    struct timespec start, stop;
    double accum;
    uint32 StartTime, StopTime;



    if( StartTime = clock_gettime( CLOCK_REALTIME, &start) == -1 ) {
      perror( "clock gettime" );
      return EXIT_FAILURE;
    }

StartTime = start.tv_sec + 0.0000000001 * start.tv_nsec;
    system( argv[1] ); // or it could be any calculation

    if( StopTime = clock_gettime( CLOCK_REALTIME, &stop) == -1 ) {
      perror( "clock gettime" );
      return EXIT_FAILURE;
    }

StopTime = stop.tv_sec + 0.0000000001 * stop.tv_nsec;

 accum = StopTime - StartTime;
    printf( "%lf\n", accum );
    return EXIT_SUCCESS;
  }


该程序计算所需的时间
        执行指定为第一个参数的程序。
       时间以秒为单位打印,标准输出。
我正在计算开始时间和停止时间以进行一些计算。我能够获得计算的开始时间和停止时间,但无法找到开始与停止时间之间的差,即累计。有人可以帮我吗?

最佳答案

删除StartTimeStopTime。声明此功能:

double to_double(struct timespec t) {
    return t.tv_sec + 0.0000000001 * t.tv_nsec;
}


这样您将获得时间增量:

accum = to_double(stop) - to_double(start);

10-06 00:37