QT读取ini和xml的时间测试对比

测试条件:

  1. Windows7 PC;
  2. 编译器MSVC2010;
  3. QT5.5.1;
  4. 计数接口API:QueryPerformanceCounter();
  5. 节点量 100个;

用来做测试的数据xml 和 ini文本
在这里插入图片描述

测试实验目标

  1. 分别一次性读出ini 和 xml 中的 键值对数据;

读XML方法
QString filepath = “d:\usefile.xml”;
QFileInfo fileinfo(filepath);
if (!fileinfo.exists())
return;

QFile file(filepath);
if (!file.open(QIODevice::ReadWrite)) {
    return;
}

QDomDocument doc;
if (!doc.setContent(&file)) {
    file.close();
    return;
}
file.close();

QDir dir(fileinfo.path());
QDomNodeList nodes = doc.documentElement().elementsByTagName("item");
qDebug() << "nodes.length()___" << nodes.length();
if (nodes.length() < 1)
    return;
QDomElement element;

//CT t;
LARGE_INTEGER Freq;
LARGE_INTEGER BeginTime;
LARGE_INTEGER EndTime;
int res;
QueryPerformanceFrequency(&Freq); // 获取时钟周期
QueryPerformanceCounter(&BeginTime); // 获取时钟计数
for (int i = 0; i < nodes.size(); i++) {
    QDomNode node = nodes.at(i);
    element = node.toElement();

    QList<QStandardItem*> item;
    QString id = element.attribute("src");
    QString name = element.attribute("dst");
}
//t.Print();
QueryPerformanceCounter(&EndTime);
//printf("kinematicsForward = %d %lf us\n", res, 1000000.0 * (EndTime.QuadPart-BeginTime.QuadPart)/Freq.QuadPart);
qDebug() << QString("[XML]: kinematicsForward = %1 %2 us").arg(QString::number(res)).arg(QString::number(1000000.0 * (EndTime.QuadPart-BeginTime.QuadPart)/Freq.QuadPart));
qDebug() << nodes.size();

读ini 的方法
QString filePath = “d:\usefile.ini”;
LPWSTR strStudName;
QString key, var;
//CT t;
LARGE_INTEGER Freq;
LARGE_INTEGER BeginTime;
LARGE_INTEGER EndTime;
int res;
QueryPerformanceFrequency(&Freq); // 获取时钟周期
QueryPerformanceCounter(&BeginTime); // 获取时钟计数

for(int i=0; i<100; i++) {
    key = QString("Count-%1").arg(i);
    ::GetPrivateProfileString(QString("FileCount").toStdWString().c_str(), key.toStdWString().c_str(), QString("默认姓名").toStdWString().c_str(),
                              strStudName,MAX_PATH,
                              filePath.toStdWString().c_str());

    var = QString::fromStdWString(strStudName);
    //qDebug() << var;
}
//t.Print();
QueryPerformanceCounter(&EndTime);
//printf("kinematicsForward = %d %lf us\n", res, 1000000.0 * (EndTime.QuadPart-BeginTime.QuadPart)/Freq.QuadPart);
qDebug() << QString("[INI]: kinematicsForward = %1 %2 us").arg(QString::number(res)).arg(QString::number(1000000.0 * (EndTime.QuadPart-BeginTime.QuadPart)/Freq.QuadPart));

实验测试结果
图1

  1. 在QT中读XML 要比 INI 文件更高效!
  2. xml 的时间为 : 51.9399 us;
  3. ini的时间为 : 14211.6 us
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值