我很想知道当我输入n = 40时执行以下斐波纳契串行代码所需的实际执行时间???
#include<stdio.h>
void printFibonacci(int);
int main(){
int k,n;
long int i=0,j=1,f;
printf("Enter the range of the Fibonacci series: ");
scanf("%d",&n);
printf("Fibonacci Series: ");
printf("%d %d ",0,1);
printFibonacci(n);
return 0;
}
void printFibonacci(int n){
static long int first=0,second=1,sum;
if(n>0){
sum = first + second;
first = second;
second = sum;
printf("%ld ",sum);
printFibonacci(n-1);
}
}
答案 0 :(得分:0)
在Linux上,您可以使用“time”命令测量程序的执行时间:
在Windows上,您可以从Windows资源工具包下载“timer.exe”,或使用以下“技巧”之一:
答案 1 :(得分:0)
使用time命令在这里不会很好用,因为它会包含用户的输入时间,而不是算法本身。
在Windows上,我会使用QueryPerformanceFrequency和QueryPerformanceCounter的组合。
#include <windows.h>
__int64 before, after, freq;
QueryPerformanceFrequency((LARGE_INTEGER *)&freq);
QueryPerformanceCounter((LARGE_INTEGER *)&before);
printFibonacci(n);
QueryPerformanceCounter((LARGE_INTEGER *)&after);
int elapsedMs = ((after - before) * 1000) / freq;
printf("Time taken: %dms\n", elapsedMs);
Linux提供了另一组功能:
#include <time.h>
int clock_getres(clockid_t clock_id, struct timespec *res);
int clock_gettime(clockid_t clock_id, struct timespec *tp);
int clock_settime(clockid_t clock_id, const struct timespec *tp);
以下是如何使用这些内容的示例:http://www.qnx.com/developers/docs/6.5.0/index.jsp?topic=/com.qnx.doc.neutrino_lib_ref/c/clock_getres.html