From 14ad6f3a2d9482c2a0c9ce26669f82ab3550a921 Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Wed, 19 Nov 2025 18:09:10 +0100 Subject: [PATCH] Do not create a new QCollator every time we compare a string --- common/qnaturalsorting.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/common/qnaturalsorting.cpp b/common/qnaturalsorting.cpp index 2db6b73d..dcc64445 100644 --- a/common/qnaturalsorting.cpp +++ b/common/qnaturalsorting.cpp @@ -2,12 +2,25 @@ #include -int naturalCompare(const QString &s1, const QString &s2, Qt::CaseSensitivity caseSensitivity) -{ +static QCollator collatorCI = [] { QCollator c; - c.setCaseSensitivity(caseSensitivity); c.setNumericMode(true); c.setIgnorePunctuation(false); + c.setCaseSensitivity(Qt::CaseInsensitive); + return c; +}(); + +static QCollator collatorCS = [] { + QCollator c; + c.setNumericMode(true); + c.setIgnorePunctuation(false); + c.setCaseSensitivity(Qt::CaseSensitive); + return c; +}(); + +int naturalCompare(const QString &s1, const QString &s2, Qt::CaseSensitivity caseSensitivity) +{ + QCollator &c = (caseSensitivity == Qt::CaseSensitive) ? collatorCS : collatorCI; return c.compare(s1, s2); } bool naturalSortLessThanCS(const QString &left, const QString &right)