小编Jar*_*ary的帖子

测量函数所花费的时间:clock_gettime

我想测量一个函数需要多长时间.

我有一个小问题:虽然我想要精确,并使用浮点,每次我使用%lf打印我的代码我得到两个答案之一:1.000 ...或0.000 ....这让我想知道如果我的代码是正确的:

#define BILLION  1000000000L;

// Calculate time taken by a request
struct timespec requestStart, requestEnd;
clock_gettime(CLOCK_REALTIME, &requestStart);
function_call();
clock_gettime(CLOCK_REALTIME, &requestEnd);

// Calculate time it took
double accum = ( requestEnd.tv_sec - requestStart.tv_sec )
  + ( requestEnd.tv_nsec - requestStart.tv_nsec )
  / BILLION;
printf( "%lf\n", accum );
Run Code Online (Sandbox Code Playgroud)

大部分代码都不是由我做的.此示例页面包含说明clock_gettime使用的代码:http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/clibref/qnx/clock_gettime.html

任何人都可以让我知道什么是不正确的,或者为什么我只得到整数值?

非常感谢你,

Jary

c timing clock

27
推荐指数
2
解决办法
7万
查看次数

如何从struct tm中创建一个人类可读的字符串?

我得到一个struct tm,我想将它转换为具有此特定输出的字符串:

dd-mm-yyyy hh:mm

除了月份(mm)之外,一切都是数字,例如:

2010年10月14日10:35

这是我目前的代码:

  struct stat sb;
  if (lstat(path, &sb) == 0) {
    struct tm *pmytm = gmtime(&sb.st_mtime);
    sprintf(array[index]->mtime, "%d-%d-%d %d:%d", pmytm->tm_mday, pmytm->tm_mon, 1900 + pmytm->tm_year, pmytm->tm_hour, pmytm->tm_min);
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何有效地将pmytm-> tm_mon转移到月份.你是否建议我构建一个数月的数组并且只是索引到该数组(用我的sprintf中的%s替换%d),或者是否有更好的解决方案?

另外,我有几小时和几分钟的问题.如果它低于10(2个数字),它将只显示一个数字,如:10:8而不是10:08.我怎么能解决这个问题?

非常感谢您的帮助,

编辑:作为一个解决方案我想到的是什么(优雅?):

  static char *months[] = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

  struct stat sb;
  if (lstat(path, &sb) == 0) {
    struct tm *pmytm = gmtime(&sb.st_mtime);
    sprintf(array[index]->mtime, "%02d-%s-%d %02d:%02d", pmytm->tm_mday, months[pmytm->tm_mon], 1900 + pmytm->tm_year, pmytm->tm_hour, pmytm->tm_min);
Run Code Online (Sandbox Code Playgroud)

Jary

c time

1
推荐指数
1
解决办法
3337
查看次数

标签 统计

c ×2

clock ×1

time ×1

timing ×1