質問: マルチスレッドプログラムの測定時間 私は機能時計()で時間を測定しましたが、結果は悪かったです。つまり、1つのスレッドで同じプログラムを実行し、OpenMPで多くのスレッドを実行している同じプログラムに対して同じ結果が得られるということです。しかし、実際には、私は多くのスレッドプログラムの数がより速いことを私の時計で知っています。 だから私は壁時計のタイマーが必要です... 私の質問は次のとおりです。この問題に対して、より良い機能は何ですか? clock_gettime()またはmb gettimeofday()?何か他に何かありますか? もしclock_gettime()ならば、どの時計ですか? CLOCK_REALTIMEまたはCLOCK_MONOTONIC? mac os x(snow leopard)を使用して
回答: ウォールクロックの時間が必要で、 `clock_gettime()`が利用可能な場合は、これが良い選択です。時間間隔を測定する場合は `CLOCK_MONOTONIC` 、実際の時刻を取得する場合は `CLOCK_REALTIME` で使用してください。 `CLOCK_REALTIME` gives you the actual time of day, but is affected by adjustments to the system time -- so if the system time is adjusted while your program runs that will mess up measurements of intervals using it. `CLOCK_MONOTONIC` doesn't give you the correct time of day, but it does count at the same rate and is immune to changes to the system time -- so it's ideal for measuring intervals, but useless when correct time of day is needed for display or for timestamps.