summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Wu Won <kevin.wu-won@nokia.com>2010-10-12 15:20:18 +1000
committerKevin Wu Won <kevin.wu-won@nokia.com>2010-10-12 15:24:00 +1000
commitedba763335575c5dc7b26e39aac3ecf2f06290ec (patch)
tree448d39d820326e9215c984379dd88ed4780261f1
parentce598790f41edfcb8439833ddf6f4967996ee576 (diff)
Some more optimizations for QVersitWriter (speed up 40%)
Avoid some calls to QByteArray::mid Avoid some QString constructors
-rw-r--r--src/versit/qvcard30writer.cpp8
-rw-r--r--src/versit/qversitdocumentwriter_p.cpp4
2 files changed, 8 insertions, 4 deletions
diff --git a/src/versit/qvcard30writer.cpp b/src/versit/qvcard30writer.cpp
index 41d38cebdb..2d73cecc89 100644
--- a/src/versit/qvcard30writer.cpp
+++ b/src/versit/qvcard30writer.cpp
@@ -167,11 +167,15 @@ void QVCard30Writer::encodeParameters(const QMultiHash<QString,QString>& paramet
*/
void QVCard30Writer::backSlashEscape(QString* text)
{
+ static const QString m1(QLatin1String("([;,\\\\])"));
+ static const QString r1(QLatin1String("\\\\1"));
+ static const QString m2(QLatin1String("\r\n|\r|\n"));
+ static const QString r2(QLatin1String("\\n"));
/* replaces ; with \;
, with \,
\ with \\
*/
- text->replace(QRegExp(QLatin1String("([;,\\\\])")), QLatin1String("\\\\1"));
+ text->replace(QRegExp(m1), r1);
// replaces any CRLFs with \n
- text->replace(QRegExp(QLatin1String("\r\n|\r|\n")), QLatin1String("\\n"));
+ text->replace(QRegExp(m2), r2);
}
diff --git a/src/versit/qversitdocumentwriter_p.cpp b/src/versit/qversitdocumentwriter_p.cpp
index 21866049c7..d32c7fc759 100644
--- a/src/versit/qversitdocumentwriter_p.cpp
+++ b/src/versit/qversitdocumentwriter_p.cpp
@@ -190,7 +190,7 @@ void QVersitDocumentWriter::writeBytes(const QByteArray &value)
int charsWritten = 0;
while (spaceRemaining < value.length() - charsWritten) {
// Write the first "spaceRemaining" characters
- if (mDevice->write(value.mid(charsWritten, spaceRemaining)) < 0
+ if (mDevice->write(value.constData() + charsWritten, spaceRemaining) < 0
|| mDevice->write("\r\n ") < 0)
mSuccessful = false;
charsWritten += spaceRemaining;
@@ -198,7 +198,7 @@ void QVersitDocumentWriter::writeBytes(const QByteArray &value)
mCurrentLineLength = 1;
}
- if (mDevice->write(value.mid(charsWritten)) < 0)
+ if (mDevice->write(value.constData() + charsWritten) < 0)
mSuccessful = false;
mCurrentLineLength += value.length() - charsWritten;
}