[Interest] Faster QXmlStreamWriter?
Thiago Macieira
thiago.macieira at intel.com
Wed Apr 25 18:02:55 CEST 2018
On Wednesday, 25 April 2018 08:45:41 PDT Thiago Macieira wrote:
> On Wednesday, 25 April 2018 07:13:18 PDT Konstantin Tokarev wrote:
> > 25.04.2018, 09:43, "Thiago Macieira" <thiago.macieira at intel.com>:
> > > So Qt 6 QJsonDocument & family will have the 128 MB limit
> > > removed, at the expense of the binary JSON format requiring parsing.
> >
> > That's sad, as we lose the single solution inside Qt for serialization
> > without parsing
>
> That was going to happen anyway, because of the 128 MB size limit. If we did
> nothing else, we'd create a new format with a much expanded size limit,
> which means the current format would need to be parsed and converted.
By the way, QJsonDocument::fromBinaryData does still perform a correctness
check, to make sure it won't crash later reading corrupt data. You can skip
this step and then loading your data is extremely fast.
Here are my numbers comparing loading that 60+ MB file in both binary JSON
format (with validation) and CBOR:
Binary JSON:
69,844846 task-clock:u (msec)
196.906.259 cycles:u
422.255.714 instructions:u
[There's no readAll(); 70.2% of the time is spent inside
QJsonPrivate::Object::isValid]
JSON:
255,809132 task-clock:u (msec)
771.771.000 cycles:u
2.690.966.058 instructions:u
[80.2% inside QJsonPrivate::Parser::parseValue, 58.7% inside
QJsonPrivate::Parser::parseString and 16.3% inside QUtf8Functions::fromUtf8]
CBOR:
239,059121 task-clock:u (msec)
562.474.857 cycles:u
1.431.590.428 instructions:u
[71.6% inside QCborValue::fromCbor, 65.0% inside
QCborContainerPrivate::decodeStringFromCbor, 25.5% inside
QCborStreamReader::readStringChunk plus 12.6% inside QUtf8::isValidUtf8]
So it's just under 4x slower, but we're still talking about consuming over
250 MB/s of data.
PS: YMMV, especially if you don't use CPU-optimised UTF-8 methods like I do.
You need to compile your own Qt to get those.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Interest
mailing list