web-dev-qa-db-ja.com

クロノ-ミリ秒単位の時間の2つのポイントの違い?

(std :: chronoライブラリを使用して)ミリ秒単位の2つの時点の差を取得するにはどうすればよいですか?

これを使用してそれを行うことができます:

std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();

std::chrono::time_point<std::chrono::system_clock> foo = now + std::chrono::milliseconds(100);

std::chrono::duration<float> difference = foo - now;

const int milliseconds = difference.count() * 1000;

ミリ秒単位でこの時間を取得するにはどうすればいいのでしょうか?そのため、フロートではなく符号なし整数として期間を使用してから1000倍しますか?

15
waas1919

std::chrono::duration には2つのテンプレートパラメーターがあり、2番目のパラメーターは正確に測定単位です。呼び出すことができます std::chrono::duration_cast あるタイプから別のタイプにキャストします。また、ミリ秒には事前定義された期間タイプがあります: std::chrono::milliseconds 。これを一緒に構成する:

auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(foo - now);

実際のミリ秒数を取得するには、 duration::count

auto ms = milliseconds.count();

戻り型はduration::rep、これはstd::chrono::millisecondsは、サイズが指定されていない符号付き整数です。

24
lisyarus
chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()
5
zoska

E-09のような文字で印刷する期間に問題がありました。修正方法は次のとおりです。

auto start = std::chrono::high_resolution_clock::now();
< run your function or code here >
auto finish = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> elapsed = finish - start;
std::cout << "Elapsed Time: " << elapsed.count() << " seconds" << std::endl;

そして今、私は望ましい結果が得られます:

Elapsed Time: 34.406 seconds
0
AceFunk

http://www.cplusplus.com/reference/chrono/duration_cast/

std::chrono::duration_cast<std::chrono::milliseconds>();
0
johnjohnlys