4 に答える
他の人が指摘したように、メンバー関数を呼び出してcount()
内部カウントを取得できます。
新しいヘッダーを追加しようとしていることを追加したかった:<chrono_io>
このライブラリに。ここに文書化されています。<chrono_io>
単に使用することの主な利点はcount()
、コンパイル時のユニットが出力されることです。もちろん、この情報は手動で取得できますが、ライブラリを使用する方がはるかに簡単です。
私にとって、あなたの例:
#include <iostream>
#include <chrono_io>
int main()
{
auto t = std::chrono::high_resolution_clock::now();
std::cout << t.time_since_epoch() << '\n';
}
出力:
147901305796958 nanoseconds
これを行うためのソース コードはオープン ソースであり、上記のリンクから入手できます。2 つのヘッダー:<ratio_io>
と<chrono_io>
、および 1 つのソース:で構成されますchrono_io.cpp
。
このコードは実験的なものと考えるべきです。これは標準ではなく、ほぼ確実にそのままでは標準化されません。実際、LWG からの予備的なコメントは、デフォルトの出力を、このソフトウェアが「短い形式」と呼ぶものにしたいと考えていることを示しています。この代替出力は、次の方法で取得できます。
std::cout << std::chrono::duration_fmt(std::chrono::symbol)
<< t.time_since_epoch() << '\n';
そして出力:
147901305796958 ns
アップデート
わずか 10 年しかかかりませんでしたが、C++20 では次のことが可能になりました。
#include <chrono>
#include <iostream>
int main()
{
auto t = std::chrono::high_resolution_clock::now();
std::cout << t.time_since_epoch() << '\n';
}
出力:
147901305796958ns
Google で簡単に検索すると、次のページが見つかりました: http://en.cppreference.com/w/cpp/chrono/duration、期間を出力する例を見つけることができます。
編集: http://en.cppreference.com/w/cpp/chrono/duration/duration_castに移動しました
ミリ秒の解像度でタイミングが必要な場合は、次のようにします。
auto t1 = std::chrono::high_resolution_clock::now();
//process to be timed
auto t2 = std::chrono::high_resolution_clock::now();
std::cout << "process took: "
<< std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()
<< " milliseconds\n";
含まれているヘッダーに追加することを忘れないでください。
#include <chrono> //timing
このキャストに何を期待しているのかわからない、多分あなたが欲しかったt.time_since_epoch().count()
?