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 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)
{
@ -1006,16 +1009,21 @@ void VCommonSettings::SetUserDefinedTimeFormats(const QStringList &formats)
//---------------------------------------------------------------------------------------------------------------------
qreal VCommonSettings::GetCurveApproximationScale() const
{
bool ok = false;
const qreal scale = value(settingPatternCurveApproximationScale, defCurveApproximationScale).toDouble(&ok);
if (ok && scale >= minCurveApproximationScale && scale <= maxCurveApproximationScale)
if (curveApproximationCached < 0)
{
return scale;
}
else
{
return defCurveApproximationScale;
bool ok = false;
const qreal scale = value(settingPatternCurveApproximationScale, defCurveApproximationScale).toDouble(&ok);
if (ok && scale >= minCurveApproximationScale && scale <= maxCurveApproximationScale)
{
curveApproximationCached = scale;
}
else
{
curveApproximationCached = defCurveApproximationScale;
}
}
return curveApproximationCached;
}
//---------------------------------------------------------------------------------------------------------------------
@ -1024,6 +1032,7 @@ void VCommonSettings::SetCurveApproximationScale(qreal value)
if (value >= minCurveApproximationScale && value <= maxCurveApproximationScale)
{
setValue(settingPatternCurveApproximationScale, value);
curveApproximationCached = value;
}
}