私はいくつかのデータベースシステムでローカル実験を行っています。私はクエリを実行する前後に/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. Couchdbデータベースが大きすぎてコンパクトにできませんか?
- 2. 私のカウント機能をPythonで動かすことができません
- 3. ネイティブコールが多すぎると速度に影響しません
- 4. 符号が長すぎて署名/検証できません
- 5. WebUIは私のサービスのクライアントに過ぎませんか?
- 6. 大きすぎるMySQLデータを取得できません
- 7. テストを実行できません。ファイルが多すぎます
- 8. Google AdSenseの小さすぎるサイズをカスタマイズできません
- 9. カウントのクエリ方法は?動作しません。私は、クエリを持って
- 10. Facebookはアプリユーザーをカウントしません
- 11. 「CoreDataはフォルトを達成できませんでした」をどうやって防ぎますか?
- 12. 私の角速度でRes.redirectは何もしません
- 13. Jiffiesカウンタオーバーフローケース+ Linux
- 14. テクスチャはBox2dボディを引き継ぎません
- 15. 私のwhileループは私の方法にとっては速すぎるループですか?
- 16. iMacroではスクリプトの速度を上げることはできませんか?
- 17. SQL結合とカウントはGROUP BYで正しくできませんか?
- 18. 落としたアイテムをカウントできません
- 19. mergeinfoカウントを負の値にインクリメントできません
- 20. select countはカウントされません
- 21. サンプルCSVファイルが大きすぎてRに読み込めませんか?
- 22. スカラコード - 私は理解できません
- 23. コンテンツが大きすぎる場合、Divsはフローティングではありません
- 24. 1秒あたりのチック数とjiffies。違いはなんですか?
- 25. Git:シンボリックリンクを作成できません(ファイル名が長すぎます)
- 26. 私はR.javaファイルを解決できません!助けて?
- 27. Android ListViewセクション付き高速スクロール:セクションテキストが長すぎます
- 28. 高速なSQLカウント
- 29. ドロップダウン/選択入力でOnChangeイベントが速すぎますか?
- 30. 私はバックエンドで私の製品を編集できません
'clock_gettime'は、ほとんどのマシンではナノ秒の解像度、または少なくともマイクロ秒です。私は時間を測定するためにすべての時間を使用し、ゼロになることはありません。 –