optimize known values lookup in CSS parser

Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
This commit is contained in:
Ivailo Monev 2019-12-01 07:58:12 +00:00
parent 8a7d025857
commit 710bdb4433

View file

@ -343,23 +343,14 @@ static const QCssKnownValue styleFeatures[NumKnownStyleFeatures - 1] = {
{ "none", StyleFeature_None }
};
static inline bool operator<(const QString &name, const QCssKnownValue &prop)
static inline quint64 findKnownValue(const QString &name, const QCssKnownValue *iter, int numValues)
{
return QString::compare(name, QLatin1String(prop.name), Qt::CaseInsensitive) < 0;
}
static inline bool operator<(const QCssKnownValue &prop, const QString &name)
{
return QString::compare(QLatin1String(prop.name), name, Qt::CaseInsensitive) < 0;
}
static quint64 findKnownValue(const QString &name, const QCssKnownValue *start, int numValues)
{
const QCssKnownValue *end = &start[numValues - 1];
const QCssKnownValue *prop = qBinaryFind(start, end, name);
if (prop == end)
return 0;
return prop->id;
for (int i = 0; i < numValues; i++) {
if (name.compare(QLatin1String(iter[i].name), Qt::CaseInsensitive) == 0) {
return iter[i].id;
}
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////