私はいくつかのデータベースシステムでローカル実験を行っています。私はクエリを実行する前後に/proc/status
からCPU情報を集めます(合計)。違いは、クエリの実行時にjiffiesまたはUSER_HZの量がわかるはずです。しかし、(clock_gettime()
によると)クエリの実行時間が0.001 seconds
以下の場合、その差はゼロです。 CPUの情報を利用するためにこれを高速化するのですか、それとも他に何か不足していますか?私は速すぎてjiffiesをカウントできませんか?
答えて
Linuxカーネル2.6.0以降、jiffyは1/250秒、つまり0.004秒です[time(7)]を参照してください。それ以上の解像度は決して得られません。
rdtsc
命令を使用することをお勧めします。この命令は、コンパイラ組み込み関数として使用されている可能性があります。これは1CPUティックごとに増分されるため、頻度で割ることで、経過した時間を取得できます。 with inline assemblyを実装することもできます。
実際には/proc/status
をチェックするのはちょっとばかげています。ファイルディスクリプタを開いて内容を読み取るのが実際に実行した時間より長くかかる可能性が高いからです。 rdtsc
ははるかに信頼性が高いです。
これを明確にしていただきありがとうございます。通常、私のクエリは、何桁も長く実行されます。だから私は、 '/ proc'へのアクセスオーバーヘッドが、CPU使用率の十分な近似のために無視できることを願っています。私はこれを私の測定プロセスの評価として取っていきます。それはぴったりしたものでもありません:P – lupz
正直なところ、「rdtsc」に切り替えるのは難しくありません。 –
私のマシンは、最初の例では約80点です(まだeclipseを通してg ++に上記のパラメータを渡す方法を理解していません)。私はインラインアセンブリーがほんの数ステップだけ離れているとは決して考えなかったでしょう。 – lupz
- 1. Visual Studioコード:スクロール速度が速すぎてマウスで選択できません
- 2. My Forループが速すぎて重要なデータを取得できません
- 3. CSSクラスの切り替えが速すぎて登録できません。
- 4. Couchdbデータベースが大きすぎてコンパクトにできませんか?
- 5. ユーザーが速すぎるとオンタッチリスナーは起動しません
- 6. sqlalchemy joinedload queryはカウントできません
- 7. YouTube API V3私のサブスクライバをカウントできません
- 8. 私のカウント機能をPythonで動かすことができません
- 9. ネイティブコールが多すぎると速度に影響しません
- 10. uintptr_tが小さすぎてアドレスを格納できません
- 11. ユーザーはログインしていません - セッションCookieが大きすぎますか?
- 12. 符号が長すぎて署名/検証できません
- 13. 位置の許可を許可してから速すぎます。場所が見つかりません
- 14. WebUIは私のサービスのクライアントに過ぎませんか?
- 15. 大きすぎるMySQLデータを取得できません
- 16. テストを実行できません。ファイルが多すぎます
- 17. なぜ私のカウンタはカウントされませんか?
- 18. なぜ私の機能はカウントされませんか?
- 19. Jiffiesカウンタオーバーフローケース+ Linux
- 20. 私のタイマーはJavaで正しくカウントされません
- 21. 私のが低すぎるとわかりませんなぜ
- 22. 私はこの目的Cコードを迅速に変換できません
- 23. Pythonソケットrecv()は、あまりにも速すぎるとすべてのメッセージを取得しません。
- 24. C#はカウントを理解できません
- 25. "JSONリクエストが大きすぎてデシリアライズできませんでした" MVC KnockoutJs
- 26. InfluxDBでのJiffiesの割合
- 27. 私のwhileループは私の方法にとっては速すぎるループですか?
- 28. カウント距離が長すぎます
- 29. なぜopenFileは私のrandomForestSRCを高速化していませんか?
- 30. Google AdSenseの小さすぎるサイズをカスタマイズできません
'clock_gettime'は、ほとんどのマシンではナノ秒の解像度、または少なくともマイクロ秒です。私は時間を測定するためにすべての時間を使用し、ゼロになることはありません。 –