错误 - 在 C 中执行的时间

error - time executing in C

我正在处理项目的第一步,我必须计算求和和乘法的执行时间...我为求和编写了下一个代码:

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

int main(int argc, char const *argv[]) {
  long muestras = 100000000;
  long resultado=0;
  float inicial = clock();
  printf("Tiempo inicial: %f\n",inicial);
  for(int i = 1; i <muestras;i+=1){
    resultado = resultado + i;
  }
  float final = clock();
  printf("Tiempo final: %f\n",final);
  float total = (final-inicial)/((double)CLOCKS_PER_SEC);
  printf("tiempo = %f",total);
  //printf("tiempo = %f",((double)clock() - start));
  printf("\n");
  printf("resultado = %d",resultado);
  return 0;
}

并且完美运行,但是我写了下一个乘法代码,初始和最终时间为0...我不知道为什么,我无法理解...

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

int main(int argc, char const *argv[]) {
  long muestras = 10;
  long long resultado=1;
  float inicial = clock();
  printf("Tiempo inicial: %f\n",inicial);
  for(int i = 1; i <muestras;i+=1){
    if (resultado>20) {
      resultado = (resultado * i)/20;
    }else{
      resultado = resultado * i;
    }
  }
  float final = clock();
  printf("Tiempo final: %f\n",final);
  float total = (final-inicial);
  ///((double)CLOCKS_PER_SEC);
  printf("tiempo = %f",total);
  //printf("tiempo = %f",((double)clock() - start));
  printf("\n");
  printf("resultado = %lli",resultado);
  return 0;
}

我知道有溢出,但无论样本大小如何,结果都是一样的....请帮忙...抱歉我的英语不好,来自哥伦比亚的伟人! :)

来自 clock 的 return 值是 clock_t 类型,而不是 float。此外,return 值不是秒或任何类似的值,而是 "clocks",您可以通过除以每秒时钟数将其转换为秒。

你应该这样做:

clock_t initial = clock();
...
clock_t final = clock();
double total = (final - initial) / (double)CLOCKS_PER_SEC;
printf("time delta = %f", total);

注意 there is no way of printfing a value of type clock_t correctly.

clock() 中的 return 值的类型是 clock_t 而不是 float,它表示自程序开始以来的滴答数。您应该减去它们,然后转换为 double 以除以 CLICKS_PER_SEC,如 Antti 的回答。

此外,您的乘法程序只执行 10 muestras,这意味着它可能会在第一个时钟周期内完全完成。将其增加到一个很大的数字,您可能会看到不同的经过时间。