diff options
author | Kevin Wu Won <kevin.wu-won@nokia.com> | 2010-10-12 15:20:18 +1000 |
---|---|---|
committer | Kevin Wu Won <kevin.wu-won@nokia.com> | 2010-10-12 15:24:00 +1000 |
commit | edba763335575c5dc7b26e39aac3ecf2f06290ec (patch) | |
tree | 448d39d820326e9215c984379dd88ed4780261f1 | |
parent | ce598790f41edfcb8439833ddf6f4967996ee576 (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.cpp | 8 | ||||
-rw-r--r-- | src/versit/qversitdocumentwriter_p.cpp | 4 |
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; } |