计算程序所用的时间

时间:2015-04-24 02:19:02

标签: c time

使用系列tan {-1}(x)= x - x3 / 3 + x5 / 5 - x7 / 7 + ...来计算pi的值。收敛有多快? 我的尝试:

/* Calculating the value of pi */

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

// To calculate tan inverse
float CalculateInverseTan(float fX)
{
    float fY = 0;
    float fSign = 1;
    float fTerm = 0;
    int iii = 1;
    do
    {
        float fPow = 1;
        int jjj;
        // Calculating the power
        for (jjj = 1; jjj <= iii; jjj++)
        {
            fPow *= fX;
        }
        fTerm = fSign * (fPow / iii);
        fY += fTerm;
        iii += 2;
        fSign *= -1;
    } while (fTerm > 0.0001 || fTerm < -0.0001);
    return fY;
}

int main()
{
    printf("Let x = tan^(-1)(1).\n");
    time_t start = time(0);
    float fTanInverse1 = CalculateInverseTan(1);
    time_t end = time(0);
    printf("Therefore x = %f. Time of convergence = %f sec.\nAs x  = pi/4, therefore pi = 4x.\nTherefore pi = %f\n", fTanInverse1, difftime(start, end), 4 * fTanInverse1);
    return 0;
}

我设法计算了pi的值。但收敛的时间总是为0。

3 个答案:

答案 0 :(得分:3)

看起来你的程序在&lt; 1秒?

如果是这种情况,您会得到0的结果,因为time函数的分辨率仅为1秒。

您可以使用clock函数来测量CPU的滴答时间,然后将其转换回秒。

See here for usage and more information.

答案 1 :(得分:2)

使用此方法。

#include <time.h>

int main() {
clock_t start, end;
double cpu_time_used;

start = clock();


… /* Do the work. */


end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
return 0;
}

答案 2 :(得分:0)

使用cpu时间 要获得进程CPU时间,您还可以使用时钟功能。这也在头文件`time.h&#39;中声明。 你可以使用这样的代码,

`double cpu_time;

clock_t start = clock();

/ *你的功能* /

clock_t end = clock();

cpu_time =((double)(end - start))/ CLOCKS_PER_SEC;`