MCPcopy Create free account
hub / github.com/OpenOrienteering/mapper / readFastImplementation

Method readFastImplementation

test/coord_xml_t.cpp:998–1054  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

996}
997
998void CoordXmlTest::readFastImplementation()
999{
1000 QFETCH(int, num_coords);
1001 MapCoordVector coords(num_coords, proto_coord);
1002
1003 buffer.buffer().truncate(0);
1004 QBuffer header;
1005 {
1006 QXmlStreamWriter xml(&header);
1007
1008 header.open(QBuffer::ReadWrite);
1009 xml.setAutoFormatting(false);
1010 xml.setAutoFormatting(false);
1011 xml.writeStartDocument();
1012
1013 XMLFileFormat::active_version = 6; // Activate fast text format.
1014
1015 xml.writeStartElement(QString::fromLatin1("root"));
1016 xml.writeCharacters(QString{}); // flush root start element
1017
1018 buffer.open(QBuffer::ReadWrite);
1019 xml.setDevice(&buffer);
1020 {
1021 XmlElementWriter element(xml, QLatin1String("coords"));
1022 element.write(coords);
1023 }
1024
1025 xml.setDevice(nullptr);
1026
1027 buffer.close();
1028 header.close();
1029 }
1030
1031 header.open(QBuffer::ReadOnly);
1032 buffer.open(QBuffer::ReadOnly);
1033 QXmlStreamReader xml;
1034 xml.addData(header.buffer());
1035 xml.readNextStartElement();
1036 QCOMPARE(xml.name().toString(), QString::fromLatin1("root"));
1037
1038 bool failed = false;
1039 QBENCHMARK
1040 {
1041 // benchmark iteration overhead
1042 coords.clear();
1043 xml.addData(buffer.data());
1044
1045 xml.readNextStartElement();
1046 if (xml.name() != QLatin1String("coords"))
1047 {
1048 failed = true;
1049 break;
1050 }
1051
1052 XmlElementReader element(xml);
1053 element.read(coords);
1054 }
1055

Callers

nothing calls this directly

Calls 9

QLatin1StringClass · 0.85
openMethod · 0.80
setDeviceMethod · 0.80
nameMethod · 0.80
writeMethod · 0.45
toStringMethod · 0.45
clearMethod · 0.45
dataMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected