Use QStringView more to reduce allocations

This commit is contained in:
Fushan Wen 2024-02-20 12:11:37 +08:00 committed by Albert Astals Cid
parent 5ae81f4486
commit 677a2467ba
3 changed files with 10 additions and 9 deletions

View file

@ -46,7 +46,8 @@ static UnrarFlavour *detectUnrar(const QString &unrarPath, const QString &versio
bool ok = proc.waitForFinished(-1);
Q_UNUSED(ok)
static const QRegularExpression regex(QStringLiteral("[\r\n]"));
const QStringList lines = QString::fromLocal8Bit(proc.readAllStandardOutput()).split(regex, Qt::SkipEmptyParts);
const QString output = QString::fromLocal8Bit(proc.readAllStandardOutput());
const QList<QStringView> lines = QStringView(output).split(regex, Qt::SkipEmptyParts);
if (!lines.isEmpty()) {
if (lines.first().startsWith(QLatin1String("UNRAR "))) {
kind = new NonFreeUnrarFlavour();

View file

@ -73,9 +73,9 @@ static QColor hexToRgba(const QByteArray &name)
return QColor(r, g, b, a);
}
static QRectF stringToRectF(const QString &data)
static QRectF stringToRectF(QStringView data)
{
QStringList numbers = data.split(QLatin1Char(','));
const QList<QStringView> numbers = data.split(QLatin1Char(','));
QPointF origin(numbers.at(0).toDouble(), numbers.at(1).toDouble());
QSizeF size(numbers.at(2).toDouble(), numbers.at(3).toDouble());
return QRectF(origin, size);
@ -864,8 +864,8 @@ void XpsPage::processImageBrush(XpsRenderNode &node)
QString att;
QBrush brush;
QRectF viewport = stringToRectF(node.attributes.value(QStringLiteral("Viewport")).toString());
QRectF viewbox = stringToRectF(node.attributes.value(QStringLiteral("Viewbox")).toString());
QRectF viewport = stringToRectF(node.attributes.value(QStringLiteral("Viewport")));
QRectF viewbox = stringToRectF(node.attributes.value(QStringLiteral("Viewbox")));
QImage image = loadImageFromFile(node.attributes.value(QStringLiteral("ImageSource")).toString());
// Matrix which can transform [0, 0, 1, 1] rectangle to given viewbox

View file

@ -1756,10 +1756,10 @@ bool Part::openUrl(const QUrl &_url, bool swapInsteadOfOpening)
int page = dest.toInt(&ok);
if (!ok) {
const QStringList parameters = dest.split(QLatin1Char('&'));
for (const QString &parameter : parameters) {
if (parameter.startsWith(QStringLiteral("page="), Qt::CaseInsensitive)) {
page = QStringView {dest}.mid(5).toInt(&ok);
const QList<QStringView> parameters = QStringView(dest).split(QLatin1Char('&'));
for (const QStringView parameter : parameters) {
if (parameter.startsWith(QLatin1String("page="), Qt::CaseInsensitive)) {
page = QStringView(dest).mid(5).toInt(&ok);
}
}
}