12

私は Web で検索しましたが、それを行う方法しか見つけられませんでしたが、この方法ではミリ秒ではなく秒単位で返されます。

私のコードは次のとおりです。

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

int main(void)
{
    int solucion;

    time_t start, stop;
    clock_t ticks;
    long count;

    time(&start);
    solucion = divisores_it(92000000, 2);
    time(&stop);

    printf("Finnished in %f seconds. \n", difftime(stop, start));
    return 0;
}
4

6 に答える 6

35

クロスプラットフォームの方法は、ftime を使用することです。

Windows 固有のリンクはこちら: http://msdn.microsoft.com/en-us/library/aa297926(v=vs.60).aspx

以下の例。

#include <stdio.h>
#include <sys\timeb.h> 

int main()     
{ 
    struct timeb start, end;
    int diff;
    int i = 0;
    ftime(&start);

    while(i++ < 999) {
        /* do something which takes some time */
        printf(".");    
    }

    ftime(&end);
    diff = (int) (1000.0 * (end.time - start.time)
        + (end.millitm - start.millitm));

    printf("\nOperation took %u milliseconds\n", diff);
    return 0;
}

上記のコードを実行し、VS2008 を使用してトレースしたところ、実際に Windows の GetSystemTimeAsFileTime 関数が呼び出されていることがわかりました。

とにかく、 ftime はミリ秒の精度を提供します。

于 2013-06-22T16:36:32.770 に答える