|
Rex Dieter |
adf30af |
From da5751c7b1589d2ea5800a3cf96dfc93b23b9783 Mon Sep 17 00:00:00 2001
|
|
Rex Dieter |
adf30af |
From: Milian Wolff <mail@milianw.de>
|
|
Rex Dieter |
adf30af |
Date: Tue, 9 Dec 2014 14:35:04 +0100
|
|
Rex Dieter |
adf30af |
Subject: [PATCH 28/30] Extend imapparser benchmark and keep static data
|
|
Rex Dieter |
adf30af |
around.
|
|
Rex Dieter |
adf30af |
|
|
Rex Dieter |
adf30af |
This gets rid of some temporary allocations and thus speeds up
|
|
Rex Dieter |
adf30af |
the whole process a bit.
|
|
Rex Dieter |
adf30af |
|
|
Rex Dieter |
adf30af |
REVIEW: 121406
|
|
Rex Dieter |
adf30af |
---
|
|
Rex Dieter |
adf30af |
libs/imapparser.cpp | 5 +++--
|
|
Rex Dieter |
adf30af |
libs/tests/imapparserbenchmark.cpp | 22 ++++++++++++++++++++++
|
|
Rex Dieter |
adf30af |
2 files changed, 25 insertions(+), 2 deletions(-)
|
|
Rex Dieter |
adf30af |
|
|
Rex Dieter |
adf30af |
diff --git a/libs/imapparser.cpp b/libs/imapparser.cpp
|
|
Rex Dieter |
adf30af |
index 9b437e2..6f9f592 100644
|
|
Rex Dieter |
adf30af |
--- a/libs/imapparser.cpp
|
|
Rex Dieter |
adf30af |
+++ b/libs/imapparser.cpp
|
|
Rex Dieter |
adf30af |
@@ -364,7 +364,8 @@ int ImapParser::parseNumber( const QByteArray &data, qint64 &result, bool *ok, i
|
|
Rex Dieter |
adf30af |
QByteArray ImapParser::quote( const QByteArray &data )
|
|
Rex Dieter |
adf30af |
{
|
|
Rex Dieter |
adf30af |
if ( data.isEmpty() ) {
|
|
Rex Dieter |
adf30af |
- return QByteArray( "\"\"" );
|
|
Rex Dieter |
adf30af |
+ static const QByteArray empty( "\"\"" );
|
|
Rex Dieter |
adf30af |
+ return empty;
|
|
Rex Dieter |
adf30af |
}
|
|
Rex Dieter |
adf30af |
|
|
Rex Dieter |
adf30af |
const int inputLength = data.length();
|
|
Rex Dieter |
adf30af |
@@ -499,7 +500,7 @@ int ImapParser::parseDateTime( const QByteArray &data, QDateTime &dateTime, int
|
|
Rex Dieter |
adf30af |
}
|
|
Rex Dieter |
adf30af |
|
|
Rex Dieter |
adf30af |
pos += 3;
|
|
Rex Dieter |
adf30af |
- const QByteArray shortMonthNames( "janfebmaraprmayjunjulaugsepoctnovdec" );
|
|
Rex Dieter |
adf30af |
+ static const QByteArray shortMonthNames( "janfebmaraprmayjunjulaugsepoctnovdec" );
|
|
Rex Dieter |
adf30af |
int month = shortMonthNames.indexOf( data.mid( pos, 3 ).toLower() );
|
|
Rex Dieter |
adf30af |
if ( month == -1 ) {
|
|
Rex Dieter |
adf30af |
return start;
|
|
Rex Dieter |
adf30af |
diff --git a/libs/tests/imapparserbenchmark.cpp b/libs/tests/imapparserbenchmark.cpp
|
|
Rex Dieter |
adf30af |
index 17dac66..fd4335c 100644
|
|
Rex Dieter |
adf30af |
--- a/libs/tests/imapparserbenchmark.cpp
|
|
Rex Dieter |
adf30af |
+++ b/libs/tests/imapparserbenchmark.cpp
|
|
Rex Dieter |
adf30af |
@@ -94,6 +94,28 @@ class ImapParserBenchmark : public QObject
|
|
Rex Dieter |
adf30af |
ImapParser::parseParenthesizedList( data, result, 0 );
|
|
Rex Dieter |
adf30af |
}
|
|
Rex Dieter |
adf30af |
}
|
|
Rex Dieter |
adf30af |
+
|
|
Rex Dieter |
adf30af |
+ void parseNumber()
|
|
Rex Dieter |
adf30af |
+ {
|
|
Rex Dieter |
adf30af |
+ QByteArray data( "123456" );
|
|
Rex Dieter |
adf30af |
+ qint64 result;
|
|
Rex Dieter |
adf30af |
+ bool ok = false;
|
|
Rex Dieter |
adf30af |
+ QBENCHMARK {
|
|
Rex Dieter |
adf30af |
+ ImapParser::parseNumber( data, result, &ok );
|
|
Rex Dieter |
adf30af |
+ }
|
|
Rex Dieter |
adf30af |
+ QVERIFY(ok);
|
|
Rex Dieter |
adf30af |
+ QCOMPARE(result, qint64(123456));
|
|
Rex Dieter |
adf30af |
+ }
|
|
Rex Dieter |
adf30af |
+
|
|
Rex Dieter |
adf30af |
+ void parseDateTime()
|
|
Rex Dieter |
adf30af |
+ {
|
|
Rex Dieter |
adf30af |
+ QByteArray data( "28-May-2006 01:03:35 +0000" );
|
|
Rex Dieter |
adf30af |
+ QDateTime result;
|
|
Rex Dieter |
adf30af |
+ QBENCHMARK {
|
|
Rex Dieter |
adf30af |
+ ImapParser::parseDateTime( data, result );
|
|
Rex Dieter |
adf30af |
+ }
|
|
Rex Dieter |
adf30af |
+ QCOMPARE(result.toString( QString::fromUtf8( "dd-MMM-yyyy hh:mm:ss +0000" ) ), QString::fromUtf8( data ));
|
|
Rex Dieter |
adf30af |
+ }
|
|
Rex Dieter |
adf30af |
};
|
|
Rex Dieter |
adf30af |
|
|
Rex Dieter |
adf30af |
#include "imapparserbenchmark.moc"
|
|
Rex Dieter |
adf30af |
--
|
|
Rex Dieter |
adf30af |
2.1.0
|
|
Rex Dieter |
adf30af |
|