C++/QT 获取时间戳性能对比

在一次保存采集到的图像时遇到了一个很有趣的问题,为了区分保存的Bmp图片,需要用到时间戳来作为图片的名称,我是用Qt做的功能,自然而然第一时间想到的是用Qt中的QDateTime类来获取当前时间,然后输出格式:Image_年_月_日_时_分_秒_毫秒.bmp(Image_2023_1_12_11_20_34_618.bmp)。
但是,使用QDateTime性能真是不敢恭维,不是一般的慢,几乎是一秒保存一张图片,最后实在没办法使用了Windows API GetLocalTime()函数来获取当前时间,毕竟是在windows系统下做的项目,使用自带的接口就很靠谱了。下面直接看效果。
使用QDateTime获取当前时间保存图片的效果:
请添加图片描述
使用 GetLocalTime()获取当前时间保存图片的效果:
请添加图片描述
两种方式都保存3s左右的图片,使用QDateTime保存了5张图片,使用GetLocalTime()保存了311张图片,如此的悬殊,真是不可思议。
代码部分:
QDateTime

static const char *c_sDate = "yyyy_MM_dd_";
static const char *c_sTime = "hh_mm_ss_ms";
QString getDataTimeString()
{
	QDateTime dataTime = QDateTime::currentDateTime();
	QString sToday = dataTime.date().toString(c_sDate);
	QString sTime = dataTime.time().toString(c_sTime);
	return sToday + sTime;
}

GetLocalTime

QString getDataTimeString()
{
	SYSTEMTIME   sysTime;          //系统时间
	QString      strFileName;      //图像保存路径名称

	//获取当前时间为图像保存的默认名称
	GetLocalTime(&sysTime);
	strFileName = QString("%1_%2_%3_%4_%5_%6_%7").arg(sysTime.wYear).arg(sysTime.wMonth)
		.arg(sysTime.wDay).arg(sysTime.wHour).arg(sysTime.wMinute).arg(sysTime.wSecond).arg(sysTime.wMilliseconds);

	return strFileName;
}

版权声明:本文为weixin_42326676原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。