[解決済み] C++ クロスプラットフォーム高分解能タイマ
質問
C++で簡単なタイマー機構を実装したいと思っています。コードは、WindowsとLinuxで動作する必要があります。解像度はできるだけ正確であるべきです(少なくともミリ秒の精度)。これは、単に時間の経過を追跡するために使用され、いかなる種類のイベント駆動設計を実装するためではありません。これを達成するための最良のツールは何でしょうか?
どのように解決するのですか?
C++03の場合 :
ブースト.タイマ
は動作するかもしれませんが、C 関数の
clock
に依存しているので、十分な解像度が得られないかもしれません。
Boost.Date_Timeには
ptime
クラス
は、以前Stack Overflowで推奨されていたものです。 のドキュメントを参照してください。
microsec_clock::local_time
と
microsec_clock::universal_time
しかし、quot;Win32システムはこのAPIでマイクロ秒の分解能を達成できないことが多いという注意書きに注意してください。
STLsoft
STLsoft は、OS 固有の API に対する薄いクロスプラットフォーム (Windows と Linux/Unix) の C++ ラッパーなどを提供しています。 その
パフォーマンスライブラリ
には、あなたが必要とすることを実現するいくつかのクラスがあります。 (クロスプラットフォームにするためには、以下のようなクラスを選びます。
performance_counter
の両方に存在する
winstl
と
unixstl
の名前空間のどちらかを使用し、プラットフォームに合わせてください)。
C++11以上の場合 :
を使用します。
std::chrono
ライブラリはこの機能を内蔵しています。 参照
この回答
by @HowardHinnant を参照してください。
関連
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み] Pythonでホームディレクトリを取得するための正しいクロスプラットフォームな方法は何ですか?
-
[解決済み] 1サイクルあたり4FLOPの理論上の最大値を達成するにはどうすればよいですか?
-
[解決済み] System.currentTimeMillisとSystem.nanoTimeの比較
-
[解決済み】WindowsでPythonスクリプトをサービスとして実行するにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】'cout'は型名ではない
-
[解決済み】C++の余分な資格エラー
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] ANSI Cでミリ秒単位で時間を計るには?
-
[解決済み] C++でコードスニペットの実行時間を計算する方法
-
[解決済み] <chrono>からint milli'sとfloat secondsで継続時間を取得するには?