Optimize a measurements file loading time.

This commit is contained in:
Roman Telezhynskyi 2021-01-19 13:25:10 +02:00
parent e7ae897433
commit 61867fa2d7

View File

@ -232,7 +232,9 @@ bool LessThen(const QDomNode &element1, const QDomNode &element2)
} }
return false; return false;
} }
}
Unit mUnitCached = Unit::LAST_UNIT_DO_NOT_USE;
} // namespace
Q_LOGGING_CATEGORY(vXML, "v.xml") Q_LOGGING_CATEGORY(vXML, "v.xml")
@ -586,19 +588,18 @@ qreal VDomDocument::GetParametrDouble(const QDomElement &domElement, const QStri
bool ok = false; bool ok = false;
qreal param = 0; qreal param = 0;
const QString message = QObject::tr("Can't convert toDouble parameter");
try try
{ {
QString parametr = GetParametrString(domElement, name, defValue); QString parametr = GetParametrString(domElement, name, defValue);
param = parametr.replace(QChar(','), QChar('.')).toDouble(&ok); param = parametr.replace(QChar(','), QChar('.')).toDouble(&ok);
if (ok == false) if (ok == false)
{ {
throw VExceptionConversionError(message, name); throw VExceptionConversionError(QObject::tr("Can't convert toDouble parameter"), name);
} }
} }
catch (const VExceptionEmptyParameter &e) catch (const VExceptionEmptyParameter &e)
{ {
VExceptionConversionError excep(message, name); VExceptionConversionError excep(QObject::tr("Can't convert toDouble parameter"), name);
excep.AddMoreInformation(e.ErrorMessage()); excep.AddMoreInformation(e.ErrorMessage());
throw excep; throw excep;
} }
@ -638,14 +639,17 @@ quint32 VDomDocument::GetParametrId(const QDomElement &domElement)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
Unit VDomDocument::MUnit() const Unit VDomDocument::MUnit() const
{ {
Unit unit = StrToUnits(UniqueTagText(TagUnit, unitCM)); if (mUnitCached == Unit::LAST_UNIT_DO_NOT_USE)
if (unit == Unit::Px)
{ {
unit = Unit::Cm; mUnitCached = StrToUnits(UniqueTagText(TagUnit, unitCM));
if (mUnitCached == Unit::Px)
{
mUnitCached = Unit::Cm;
}
} }
return unit; return mUnitCached;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------