2016-08-31 10 views
0

私はAMD FX 43003.8GHzと使用しています。つまり、3.8Gクロック/秒です。 しかし、私がコマンドCLOCKS_PER_SECを実行すると、それは他の何かを示しています。私はCLOCKS_PER_SECを理解する助けが必要です

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

int main()  
{  
    printf("%lu\n",CLOCKS_PER_SEC); 

    return 0; 
} 

それは示しています1000

はそれが正しいですか?

プロセッサーまたはこのプログラムの動作に問題はありますか?

+1

最近では 'std :: chrono'を使用しています – drescherjm

+3

***プロセッサーやこのプログラムの動作に問題はありますか?***私はどちらも言いません。 'CLOCKS_PER_SEC'はCPUサイクルを測定していません。あなたのCPUが動的に乗数を調整することは、今日それほど良いことではないとしても... – drescherjm

+0

'それはあなたのすべての欠陥です。 POSIXに準拠しないシステムの実行を停止すると、パフォーマンスは[boosted by 1000](http://en.cppreference.com/w/cpp/chrono/c/CLOCKS_PER_SEC)になります。D –

答えて

1

他の問題を脇に置くと、CLOCKS_PER_SECは信頼できません。例えば

see the linux clock man page):

POSIXはCLOCKS_PER_SECが実際の解像度1000000独立に等しいことを必要とします。

+2

それはそれが信頼できないということを意味するわけではありません。POSIXが定義するのと同じように、あなたがそれを呼び出すたびに '1000000'に依存することができます。私があなたが思っている問題は、 'CLOCKS_PER_SEC'とあなたのプロセッサティックの間にはほとんど相関がないことです。 –

+0

@ DavidC.Rankinしかし、それはほとんどすべて真ですが、誰もがPOSIX要件を実装しているわけではありません。だから私は両方のPOSIX値に依存することができますので、ほとんどのシステム(しかし、すべてではない)の両方の真実だと思います。 – Myst

+1

':)'のコメントに小さなウインクとうなずきがありました。 –

関連する問題