代码运行时间间隔

 
#include "c1.h"
#include <sys/time.h> 

int main(){

    double x,sum=1,sum1;
    int i,j,n;

    printf("输入x n:");
    scanf("%lf%d",&x,&n);
    printf("x=%lf, n=%d\n",x,n);

    struct timeval start,end;  
    gettimeofday(&start, NULL );  

    //个人代码 
    for(i=1;i<=n;i++){
        sum1 = 1;
        for(j=1;j<=i;j++)
            sum1 = sum1*(-1.0/x);
        sum += sum1;
    }

    gettimeofday(&end, NULL );  
    double timeuse = ( end.tv_sec - start.tv_sec )*1000*1000 + (end.tv_usec - start.tv_usec);  
    printf("秒:%ld ,微秒 : %f\n",end.tv_sec - start.tv_sec,timeuse);  

    return 0;
}

int ftime(timeb*)’ is deprecated

 
#include "c1.h"
#include <sys/time.h> 


int main(){
    timeb t1,t2;
    long t;
    double x,sum=1,sum1;
    int i,j,n;

    printf("输入x n:");
    scanf("%lf%d",&x,&n);
    printf("x=%lf, n=%d\n",x,n);

    // warning: ‘int ftime(timeb*)’ is deprecated [-Wdeprecated-declarations]
    ftime(&t1);//求得当前时间

    // struct timeval start,end;  

    // gettimeofday(&start, NULL );  

    //个人代码 
    for(i=1;i<=n;i++){
        sum1 = 1;
        for(j=1;j<=i;j++)
            sum1 = sum1*(-1.0/x);
        sum += sum1;
    }

    // gettimeofday(&end, NULL );  
    ftime(&t2);

    double timeuse = ( t2.time - t1.time )*1000 + (t2.millitm - t1.millitm);  //毫秒
    printf("毫秒 : %f\n",timeuse);  

    return 0;
}

 
time.perf_counter() 是一个高分辨率的计时器,它提供了测量短时间间隔的高精度性能计数器。
这个计数器可以用来测量代码段的执行时间,
其精度通常比 time.time() 更高,并且它的起始点是未定义的,
因此它只适合用来测量时间间隔,不适合用来表示当前时间。

  

 
import time  

# 记录代码开始执行前的时间  
start_time = time.perf_counter()  
    
# 在这里执行你的代码  
# 例如,一个简单的数学计算  
result = 0  
for i in range(1000):  
    result += i  
    
# 记录代码执行结束后的时间  
end_time = time.perf_counter()  
    
# 计算代码运行的时间差  
elapsed_time = end_time - start_time  
    
# 输出运行时间  
print(f"代码运行时间:{elapsed_time*1e6:.6f} 微秒")  #代码运行时间:320.300009 微秒
  

 
在这个例子中,elapsed_time 会给出代码执行的总时间,单位是秒,并且保留了小数点后六位,提供了较高的时间精度。time.perf_counter() 通常用于性能测试和基准测试,因为它能够提供更稳定和更精确的时间测量,特别是在比较短的代码运行时间段内。

请注意,time.perf_counter() 的具体实现和行为可能因操作系统和Python解释器的不同而有所差异,但通常它会选择系统上可用的最高精度的计时器。这使得它成为性能测试和基准测试的理想选择

  

 
import time  

# 记录代码开始执行的时间  
start_time = time.time()  
    
# 在这里运行你的代码  
# 例如:  
for i in range(10000):  
    pass  
    
# 记录代码结束执行的时间  
end_time = time.time()  
    
# 计算代码运行时间(秒)  
elapsed_time = end_time - start_time  
    
# 将运行时间转换为微秒级  
elapsed_time_microseconds = elapsed_time * 1e6  
    
# 输出运行时间(微秒)  
print(f"代码运行时间:{elapsed_time_microseconds:.2f} 微秒")
    

 
time.process_time() 是用来测量CPU时间的,
它只计算在CPU上执行的时间,不包括等待I/O操作等非计算密集型任务的时间。
这个方法通常用来度量代码段在CPU上执行的性能。

    

 
import time  

# 记录代码开始执行前的CPU时间  
start_time = time.process_time()  
    
# 执行你的代码  
# 例如,一个简单的循环  
for i in range(100000):  
    pass  
    
# 记录代码执行结束后的CPU时间  
end_time = time.process_time()  
    
# 计算代码运行所消耗的CPU时间  
elapsed_time = end_time - start_time  
    
# 输出运行时间(秒)  
print(f"代码运行消耗的CPU时间:{elapsed_time*1e6:.6f} 微秒")
    

 
代码运行消耗的CPU时间:0.000000 微秒

1000000
代码运行消耗的CPU时间:15625.000000 微秒

可以看到,代码执行时间超过某个值后才有时间,不适合短小时间测量
    
参考