计算耗时为微秒的方法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()
返回代码执行时间。在主函数中,我们调用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_clock
是C++标准库提供的一个高精度时钟,可以在微秒、纳秒级别上测量时间。
std::chrono::duration_cast
函数可以将时间差转换为指定单位的时间长度。
以上代码中,start
和end
分别记录了需要计时代码的开始和结束时间,计算出时间差之后再通过duration.count()
获取总的耗时,单位为微秒。
注意:
如果不想用auto start/end ,那可以改成
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>中找到,使用方法如下:
- 调用start()方法开始计时;
- 执行耗时操作;
- 调用nsecsElapsed()方法获取耗时时间(单位为纳秒);
- 将纳秒数除以1000得到微秒数。
最后,将计算得到的微秒数输出即可。