2017-07-31 16 views
0

これは他の何よりも好奇心の質問ですが、関数がその情報にアクセスしてコード内で使用できる方法があるのを完了するのに0.2434634秒かかりますと言っていますか?コード内の関数継続時間情報を取得する方法は?

+2

あなたは可能性があり*時間それ*、関数の実行時間を取得するためには他の標準的な方法はありません。しかし、フレームレートや他のゲームやフレームレート関連の使用(または統計)を計算することの外に、私は知らないためにそれを使うべきです。 –

+0

@Someprogrammerdude指定された関数を最適化しようとする価値があるかどうかを判断するために使用できます。 –

+0

しかし、あなたは特定のツール、ライブラリ、メソッドを求めていますか?たぶん、この場合、最終目標が何であるかを述べる必要があります。 – nbro

答えて

1

あなたは関数呼び出し前の時点を格納することにより、ealpsed時間を測定し、関数呼び出しの後の時点からそれを引くことができます。 POSIXシステムで、高精度で、これはclock_gettime機能によって達成することができます。

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

void foo() { 
    sleep(1); 
} 

double to_milli(struct timespec* ts) { 
    return (1.0e3 * ts->tv_sec) + (1.0e-6 * ts->tv_nsec); 
} 

int main() { 
    struct timespec tp_begin, tp_end; 

    clock_gettime(CLOCK_MONOTONIC, &tp_begin); 
    foo(); /* call the desired function */ 
    clock_gettime(CLOCK_MONOTONIC, &tp_end); 

    printf("Elapsed time: %.5f ms\n", to_milli(&tp_end) - to_milli(&tp_begin)); 
    return 0; 
} 
関連する問題