Speed optimization for method VCommonSettings::GetCurveApproximationScale().

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2018-01-20 12:35:43 +02:00
parent 7f84a09342
commit 7dc29c0f00

View File

@ -95,6 +95,9 @@ const QString settingLabelUserDateFormats = QStringLiteral("label/userDateFormat
const QString settingLabelTimeFormat = QStringLiteral("label/timeFormat"); const QString settingLabelTimeFormat = QStringLiteral("label/timeFormat");
const QString settingLabelUserTimeFormats = QStringLiteral("label/userTimeFormats"); const QString settingLabelUserTimeFormats = QStringLiteral("label/userTimeFormats");
// Reading settings file is very expensive, cache curve approximation to speed up getting value
qreal curveApproximationCached = -1;
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList ClearFormats(const QStringList &predefinedFormats, QStringList formats) QStringList ClearFormats(const QStringList &predefinedFormats, QStringList formats)
{ {
@ -1006,16 +1009,21 @@ void VCommonSettings::SetUserDefinedTimeFormats(const QStringList &formats)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal VCommonSettings::GetCurveApproximationScale() const qreal VCommonSettings::GetCurveApproximationScale() const
{ {
bool ok = false; if (curveApproximationCached < 0)
const qreal scale = value(settingPatternCurveApproximationScale, defCurveApproximationScale).toDouble(&ok);
if (ok && scale >= minCurveApproximationScale && scale <= maxCurveApproximationScale)
{ {
return scale; bool ok = false;
} const qreal scale = value(settingPatternCurveApproximationScale, defCurveApproximationScale).toDouble(&ok);
else if (ok && scale >= minCurveApproximationScale && scale <= maxCurveApproximationScale)
{ {
return defCurveApproximationScale; curveApproximationCached = scale;
}
else
{
curveApproximationCached = defCurveApproximationScale;
}
} }
return curveApproximationCached;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -1024,6 +1032,7 @@ void VCommonSettings::SetCurveApproximationScale(qreal value)
if (value >= minCurveApproximationScale && value <= maxCurveApproximationScale) if (value >= minCurveApproximationScale && value <= maxCurveApproximationScale)
{ {
setValue(settingPatternCurveApproximationScale, value); setValue(settingPatternCurveApproximationScale, value);
curveApproximationCached = value;
} }
} }