所要時間をマイクロ秒単位で計算する方法 (時間/分/秒/ミリ秒/マイクロ秒/ナノ秒を含む)

計算にマイクロ秒かかる方法 1

#include<stdio.h>
#include <windows.h>
int main() {
	int a[10002];
	int i = 0;
	double run_time;
	_LARGE_INTEGER time_start;	//开始时间
	_LARGE_INTEGER time_over;	//结束时间
	double dqFreq;		//计时器频率
	LARGE_INTEGER f;	//计时器频率
	QueryPerformanceFrequency(&f);
	dqFreq=(double)f.QuadPart;
	QueryPerformanceCounter(&time_start);	//计时开始
	for( i = 1; i <= 10000; i++)a[i]=i;	//要计时的程序
	QueryPerformanceCounter(&time_over);	//计时结束
	run_time=1000000*(time_over.QuadPart-time_start.QuadPart)/dqFreq;
	//乘以1000000把单位由秒化为微秒,精度为1000 000/(cpu主频)微秒
	printf("\nrun_time:%fus\n",run_time);
	return 0;
}

計算にマイクロ秒かかる方法 2

#include <QDateTime>

int main()
{
    // 获取当前时间
    QDateTime startTime = QDateTime::currentDateTime();

    // 执行需要计时的代码
    // ...

    // 获取当前时间
    QDateTime endTime = QDateTime::currentDateTime();

    // 计算执行时间
    qint64 elapsedTime = startTime.msecsTo(endTime);
    qDebug() << "Elapsed time: " << elapsedTime << " microseconds";
    return 0;
}

上記のコードでは、 QDateTime クラスを使用して現在時刻を取得し、実行時間を計算し、最後に結果を出力します。この方法を利用することで msecsTo() ミリ秒レベルの時差を取得し、マイクロ秒レベルに変換することができます。

方法 3 -- QTime

#include <QTime>

// 计算代码执行时间并返回微秒
int calcExecTime() {
    QTime timer;
    timer.start();
    // 这里放需要计时的代码
    // ...
    return timer.elapsed();
}

// 示例代码
int main() {
    int elapsed = calcExecTime();
    qDebug() << "代码执行时间:" << elapsed << "微秒";
    return 0;
}

上記のコードでは、Qt の QTime クラスを使用してコードの実行時間を計算しました。関数 ではcalcExecTime()、開始タイミングを使用しtimer.start()、次に時間を計測する必要があるコードを実行し、最後にtimer.elapsed()リターン コードを使用して時間を実行します。main 関数では、calcExecTime()コードの実行時間を呼び出して出力します。

方法 4 --- C++ 標準ライブラリの chrono ライブラリを使用して、時間のかかる時間を計算します。

#include <iostream>
#include <chrono>

int main() {
    auto start = std::chrono::high_resolution_clock::now(); // 记录开始时间

    // 执行需要计时的代码
    int sum = 0;
    for (int i = 0; i < 1000000; ++i) {
        sum += i;
    }

    auto end = std::chrono::high_resolution_clock::now(); // 记录结束时间
    auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start); // 计算耗时

    std::cout << "耗时:" << duration.count() << "微秒" << std::endl; // 输出耗时
    return 0;
}

の:

std::chrono::high_resolution_clockC++の標準ライブラリが提供する高精度な時計で、マイクロ秒、ナノ秒レベルの時間を計測できます。

std::chrono::duration_castこの関数は、時差を指定された単位の時間の長さに変換します。

上記のコードでは、タイミングが必要なコードの開始時刻と終了時刻をそれぞれ記録し、時間差を計算した後、合計のstart所要時間をマイクロ秒単位で取得します。endduration.count()

知らせ:

自動開始/終了を使用したくない場合は、次のように変更できます。

std::chrono::time_point<std::chrono::steady_clock> start=std::chrono::high_resolution_clock::now();

std::chrono::time_point<std::chrono::steady_clock> end=std::chrono::high_resolution_clock::now();

方法 5-QT では、C++ 言語を使用して、時間のかかるサンプル コードを計算します。QElapsedTimer を使用してコード ブロックの実行時間をマイクロ秒単位で計算します。

#include <QCoreApplication>
#include <QElapsedTimer>
#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QElapsedTimer timer;
    timer.start();

    // 计算代码块的执行时间
    long long sum = 0;
    for (int i = 0; i < 100000000; i++) {
        sum += i;
    }

    // 输出执行时间,单位为微秒
    std::cout << "Time elapsed: " << timer.nsecsElapsed() / 1000 << "us" << std::endl;

    return a.exec();
}

この例では、for ループを使用して、0 から 99999999 までのすべての整数の合計を計算しました。計算が完了したら、nsecsElapsed()関数を使用してコード ブロックの実行時間をナノ秒単位で取得し、それを 1000 で割ってマイクロ秒に変換します。

このうち、QElapsedTimer クラスはヘッダー ファイル <QElapsedTimer> 内にあり、使用方法は次のとおりです。

  1. start() メソッドを呼び出して計測を開始します。
  2. 時間のかかる操作を実行する。
  3. nsecsElapsed() メソッドを呼び出して、所要時間 (ナノ秒単位) を取得します。
  4. ナノ秒数を 1000 で割ると、マイクロ秒数が得られます。

最後に、計算されたマイクロ秒を出力するだけです。

おすすめ

転載: blog.csdn.net/weixin_56819992/article/details/131080811