42
4

4 に答える 4

45

他の人が指摘したように、メンバー関数を呼び出して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
于 2011-10-25T13:22:10.580 に答える
24

Google で簡単に検索すると、次のページが見つかりました: http://en.cppreference.com/w/cpp/chrono/duration、期間を出力する例を見つけることができます。

編集: http://en.cppreference.com/w/cpp/chrono/duration/duration_castに移動しました

于 2011-10-25T12:33:28.847 に答える
11

ミリ秒の解像度でタイミングが必要な場合は、次のようにします。

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
于 2015-05-20T15:27:09.147 に答える
7

このキャストに何を期待しているのかわからない、多分あなたが欲しかったt.time_since_epoch().count()

于 2011-10-25T12:34:55.480 に答える