summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-10-19 15:27:19 +0200
committerMarc Mutz <marc.mutz@qt.io>2023-10-19 22:52:22 +0200
commit4cc31901ea36dcb37efbaa316dde653ad49a5dbb (patch)
tree33463904fac127149753b1748aa3b0d4d1fd9f7e /src/corelib/serialization
parentfd09519bbd4e7ea89b898c7496e7e06980ee9672 (diff)
QCborStreamWriter: use (new) QUtf8::convertFromLatin1() to speed up append(QL1SV)
Use the new function to convert into a QVLA instead of first converting to a QString and then to a QByteArray. One conversion and one buffer instead of two each. Pick-to: 6.6 Change-Id: Ieaa24c8ef325797b5a89e8da0ca4310667c00fa7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r--src/corelib/serialization/qcborstreamwriter.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/corelib/serialization/qcborstreamwriter.cpp b/src/corelib/serialization/qcborstreamwriter.cpp
index 08273763aa..2f0de49654 100644
--- a/src/corelib/serialization/qcborstreamwriter.cpp
+++ b/src/corelib/serialization/qcborstreamwriter.cpp
@@ -7,9 +7,11 @@
#include <private/qcborcommon_p.h>
#include <private/qnumeric_p.h>
+#include <private/qstringconverter_p.h>
#include <qbuffer.h>
#include <qdebug.h>
#include <qstack.h>
+#include <qvarlengtharray.h>
QT_BEGIN_NAMESPACE
@@ -439,8 +441,10 @@ void QCborStreamWriter::append(QLatin1StringView str)
// it is plain US-ASCII
appendTextString(str.latin1(), str.size());
} else {
- // non-ASCII, so we need a pass-through UTF-16
- append(QString(str));
+ // non-ASCII, convert:
+ QVarLengthArray<char> utf8(str.size() * 2); // each L1 char gives at most two U8 units
+ const qsizetype written = QUtf8::convertFromLatin1(utf8.data(), str) - utf8.data();
+ appendTextString(utf8.data(), written);
}
}