summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/corelib/tools
Commit message (Collapse)AuthorAgeFilesLines
* Move text-related code out of corelib/tools/ to corelib/text/Edward Welbourne2019-07-1018-1994/+30
| | | | | | | | This includes byte array, string, char, unicode, locale, collation and regular expressions. Change-Id: I8b125fa52c8c513eb57a0f1298b91910e5a0d786 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove usages of deprecated APIs from QtAlgorithmsSona Kurazyan2019-06-291-4/+3
| | | | | | | | | | | | | | | | | Task-number: QTBUG-76491 Change-Id: I9dab736a0cbd2e86588919640c26e8ce6b3674d0 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Remove QLatin1Literal usagesGiuseppe D'Angelo2019-06-101-1/+1
| | | | | | | | | | | | | That's an undocumented Qt 4/3/2 remnant, start remove usages. Fix incorrect include header in qclass_lib_map.h as a drive-by. Change-Id: I939be2621bc03e5c75f7e3f152546d3af6d37b91 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Separate out the time, zone, date code from corelib/tools/Edward Welbourne2019-06-067-720/+0
| | | | | | | | | | We'll be adding calendar code here as well, and tools/ was getting rather crowded, so it looks like time to move out a reasonably coherent sub-bundle of it all. Change-Id: I7e8030f38c31aa307f519dd918a43fc44baa6aa1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add a bench-mark for QDate's isValid() and daysInMonth()Edward Welbourne2019-05-222-0/+57
| | | | | | | | | | The two perform related calculations, so test them together. RESULT : tst_QDate::monthLengths(): 0.33 msecs per iteration (total: 87, iterations: 256) Change-Id: I86b36a9182b00c0a1f40e858ed3e7812434974c4 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove handling of missing Q_COMPILER_CLASS_ENUMAllan Sandfeld Jensen2019-04-061-4/+1
| | | | | Change-Id: I1fd6d601e49e803b4c3308fb0ca41136c628afbc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-02-191-2/+2
|\ | | | | | | Change-Id: Ifa143cc462301aaa305c9c85360e543553a751f0
| * Add cmdline feature to qmakeJoerg Bornemann2019-02-181-2/+2
| | | | | | | | | | | | | | | | | | [ChangeLog][qmake] A new feature "cmdline" was added that implies "CONFIG += console" and "CONFIG -= app_bundle". Task-number: QTBUG-27079 Change-Id: I6e52b07c9341c904bb1424fc717057432f9360e1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* | Benchmark: Add _bench_ into the name of the qmap benchmarkTobias Hunger2018-11-081-1/+1
|/ | | | | Change-Id: I6a1790981eb56d56bc190634e796bc3736ddd475 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Speed up QTimeZone::isTimeZoneIdAvailable by a factor 43David Faure2018-04-233-0/+57
| | | | | | | | | | | | | | | | | Creating and sorting a list of bytearrays just to check if one entry is present, is really overkill. By adding a new virtual method isTimeZoneIdAvailable() in the backend classes, we can do this much more efficiently. Implemented for Utc and Tz backends, the others fall back to the slow way. The new benchmark shows, in release mode: Before: 43 msecs per iteration (total: 86, iterations: 2) After: 1.1 msecs per iteration (total: 73, iterations: 64) Change-Id: Ic0d79a41d74e2ce6aa088fa7986c41d33902c36b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change almost all other uses of qrand() to QRandomGeneratorThiago Macieira2017-11-082-4/+4
| | | | | | | | | | | | | | | | | | | The vast majority is actually switched to QRandomGenerator::bounded(), which gives a mostly uniform distribution over the [0, bound) range. There are very few floating point cases left, as many of those that did use floating point did not need to, after all. (I did leave some that were too ugly for me to understand) This commit also found a couple of calls to rand() instead of qrand(). This commit does not include changes to SSL code that continues to use qrand() (job for someone else): src/network/ssl/qsslkey_qt.cpp src/network/ssl/qsslsocket_mac.cpp tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp Change-Id: Icd0e0d4b27cb4e5eb892fffd14b5285d43f4afbf Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Restore compatibility with pre-5.9 Keccak calculationThiago Macieira2017-09-211-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 12c5264d9add1826d543c36d893db77262195fc6 fixed the calculation of SHA-3 in QCryptographicHash: we were previously calculating Keccak. Unfortunately, turns out that replacing the algorithm wasn't the best idea: there are people who need to compare with the result obtained from a previous version of Qt and stored somewhere. This commit restores the enum values 7 through 10 to mean Keccak and moves SHA-3 to 12 through 15. The "Sha3_nnn" enums will switch between the two according to the QT_SHA3_KECCAK_COMPAT macro. [ChangeLog][Important Behavior Changes] This version of Qt restores compatibility with pre-5.9.0 calculation of QCryptographicHash algorithms that were labelled "Sha3_nnn": that is, applications compiled with old versions of Qt will continue using the Keccak algorithm. Applications recompiled with this version will use SHA-3, unless QT_SHA3_KECCAK_COMPAT is #define'd prior to #include <QCryptographicHash>. [ChangeLog][Binary Compatibility Note] This version of Qt changes the values assigned to enumerations QCryptographicHash::Sha3_nnn. Applications compiled with this version and using those enumerations will not work with Qt 5.9.0 and 5.9.1, unless QT_SHA3_KECCAK_COMPAT is defined. Task-number: QTBUG-62025 Discussed-at: http://lists.qt-project.org/pipermail/development/2017-September/030818.html Change-Id: I6e1fe42ae4b742a7b811fffd14e418fc04f096c3 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QDateTime::fromString(): improve performance by 33%David Faure2017-01-031-2/+3
| | | | | | | | | | | | | | | | getMaximum() and getMinimum(), called during parsing, create new QDateTime instances, which on Linux end up calling mktime(). Making these static (for the common case of LocalTime spec) improves performance dramatically, when parsing several date/times. tests/benchmarks/corelib/tools/qdatetime/ (after fixing it to actually parse a valid date/time) says: RESULT : tst_QDateTime::fromString(): - 36,742,060 instruction reads per iteration (total: 36,742,060, iterations: 1) + 24,230,060 instruction reads per iteration (total: 24,230,060, iterations: 1) Change-Id: I0c3931285475bf19a5be8cba1486ed07cbf5e134 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-06-131-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config_help.txt configure mkspecs/features/uikit/sdk.prf src/corelib/global/qhooks.cpp src/corelib/io/qfilesystemwatcher.cpp src/corelib/io/qlockfile_unix.cpp src/corelib/tools/qalgorithms.h src/gui/kernel/qwindowsysteminterface.h src/gui/text/qtextdocument_p.cpp src/network/access/access.pri src/network/access/qnetworkaccessmanager.cpp src/network/access/qnetworkreplynsurlconnectionimpl.mm src/src.pro src/testlib/qtestcase.cpp src/widgets/kernel/qwidgetbackingstore_p.h src/widgets/styles/qwindowscestyle.cpp src/widgets/styles/qwindowsmobilestyle.cpp tests/auto/corelib/io/qdiriterator/qdiriterator.pro tests/auto/corelib/io/qfileinfo/qfileinfo.pro tests/auto/gui/kernel/qwindow/BLACKLIST tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp tools/configure/configureapp.cpp Change-Id: Ibf7fb9c8cf263a810ade82f821345d0725c57c67
| * Replace qAllocMore with a pair of more useful functionsThiago Macieira2016-06-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The first is "exact", not "more": qCalculateBlockSize. It ensures that there's no overflow in multiplying, adding the header size or when converting back to an int. The second is the replacement for qAllocMore: it calculates the block size like the first, but increases the block size to accommodate future appends. The number of elements that fit in the block is also returned. Task-number: QTBUG-41230 Change-Id: I52dd43c12685407bb9a6ffff13f5da09f816e667 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-05-031-1/+0
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: configure src/3rdparty/double-conversion/include/double-conversion/utils.h src/corelib/global/qnamespace.qdoc src/corelib/tools/qsimd_p.h tests/auto/corelib/io/qfile/tst_qfile.cpp Change-Id: I3ca1007bab5355d251c13002a18e93d81c254d34
| * Skip old benchmark that doesn't build automaticallyAllan Sandfeld Jensen2016-04-131-1/+0
| | | | | | | | | | | | | | This benchmark requires QtScript1 headers, and can not build as is. Change-Id: I98e57ca2db82270a0887462d7959ff00e352166b Reviewed-by: hjk <hjk@theqtcompany.com>
* | Remove Windows CE from tests (others).Friedemann Kleint2016-03-312-15/+1
|/ | | | | | | | | Remove #ifdef sections for Q_OS_WINCE, wince .pro file clauses and CE-specific files. Task-number: QTBUG-51673 Change-Id: Ibf599204f5c0daaef086edaf8fac86853db3ee14 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Add Intel copyright to files that Intel has had non-trivial contributionThiago Macieira2016-01-212-0/+2
| | | | | | | | | I wrote a script to help find the files, but I reviewed the contributions manually to be sure I wasn't claiming copyright for search & replace, adding Q_DECL_NOTHROW or adding "We mean it" headers. Change-Id: I7a9e11d7b64a4cc78e24ffff142b506368fc8842 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Update the Intel copyright yearThiago Macieira2016-01-211-1/+1
| | | | | | | | | Not that we require it, but since The Qt Company did it for all files they have copyright, even if they haven't touched the file in years (especially not in 2016), I'm doing the same. Change-Id: I7a9e11d7b64a4cc78e24ffff142b4c9d53039846 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Updated license headersJani Heikkinen2016-01-2125-423/+298
| | | | | | | | | | | | | From Qt 5.7 -> tools & applications are lisenced under GPL v3 with some exceptions, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one (in those files which will be under GPL 3 with exceptions) Change-Id: I42a473ddc97101492a60b9287d90979d9eb35ae1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Add a file to the TESTDATA listJames McDonnell2015-12-011-0/+1
| | | | | | | | | | | | | | The file exists but it isn't listed in TESTDATA. This is only a problem when the target is a another system as is the case with Qt for QNX. Tests fail because the file isn't deployed. Noticed this while testing the changes for custom spacing of JSON output. Task-number: QTBUG-47437 Change-Id: I098c34d2ab9027956d9233b24f30b5192ecfe96f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Remove QT_DISABLE_DEPRECATED_BEFORE=0 from tests not using deprecated API.Friedemann Kleint2015-09-0117-17/+0
| | | | | Change-Id: I1955320e7639760b4383a53f37a506c8055933ef Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.5' into devSimon Hausmann2015-03-162-15/+47
|\ | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/xcb/qxcbnativeinterface.cpp src/plugins/platforms/xcb/qxcbnativeinterface.h Change-Id: I31b38ba439b9341d51a01c0fd54bea33f7410076
| * Fix build of tests on QNX.Rafael Roquetto2015-03-142-15/+47
| | | | | | | | | | Change-Id: Ib28e42e3eb10e26555fe392c55534f715bee5f8b Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Make QRingBuffer a 64-bit safeAlex Trotsenko2015-03-121-2/+2
|/ | | | | | | | | | | According to I/O API, QIODevice and its inherited classes should be able to process a full 64-bit offsets and lengths. This requires 64-bit parameters in operations with internal buffers. Rework QRingBuffer to avoid implicit truncation of numbers and fix some 64-bit issues in code. Change-Id: Iadd6fd5fefd2d64e6c084e2feebb4dc2d6df66de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update copyright headersJani Heikkinen2015-02-1125-173/+173
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* QStack: Add a simple benchmark.Robin Burchell2014-12-303-0/+94
| | | | | | | | | | | | | | | | | | | | | | | This covers the only real additions over QVector: push and pop. Really, there isn't too much specific to benchmark here, but we're interested in one specific case: that of pushing and popping a single item repeatedly. With the current QVector behavior, this causes constant deallocation, which makes it morbidly slow. This behavior will be reviewed in a subsequent commit. Results (not that anyone really cares) for me: PASS : tst_QStack::qstack_push() RESULT : tst_QStack::qstack_push(): 1.9 msecs per iteration (total: 61, iterations: 32) PASS : tst_QStack::qstack_pop() RESULT : tst_QStack::qstack_pop(): 8.2 msecs per iteration (total: 66, iterations: 8) PASS : tst_QStack::qstack_pushpopone() RESULT : tst_QStack::qstack_pushpopone(): 80 msecs per iteration (total: 80, iterations: 1) Change-Id: I3530888abbfcfcef39318d6be6d5b07306a4704e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add benchmark for QString::section()Marc Mutz2014-10-041-0/+58
| | | | | Change-Id: I7ca4ceb8cfa7a3df384400a1b3ebc9be2502e396 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Merge remote-tracking branch 'origin/5.4' into devOswald Buddenhagen2014-09-2924-454/+262
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qbytearray.cpp src/gui/image/qimage.cpp src/gui/image/qppmhandler.cpp src/gui/kernel/qguiapplication.cpp src/gui/painting/qpaintengine_raster.cpp Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
| * Update license headers and add new license filesMatti Paaso2014-09-2424-454/+262
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* | Unify and optimize QByteArray::to{Upper,Lower}Thiago Macieira2014-08-192-1/+189
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do a check first if we need to transform before doing the transform. This means we won't detach when transforming data that is already correct. And instead of using QChar, use our own hand-rolled table. In a proper LTO build, the QChar calls would be resolved to a lookup of the Unicode data, but not many people do LTO builds, Therefore, this means a great speed-up is achieved by simply avoiding the function call. The extra gain in performance comes from the simpler translation table instead of the more complex full-Unicode data. Also as a consequence, this changes the handling of two characters in Latin 1: 'ß' should be uppercased to "SS" but we won't do it, and 'ÿ' can't be uppercased in Latin 1 ('Ÿ' is outside the range). Benchmarking is included. Comparing the Qt 5.4 algorithm to the new code is almost 20x faster. Other alternatives are included in the benchmark and are all faster than the current code, though slower than the new one. While all of them could compress the tables to be smaller or shared between uppercasing and lowercasing, they would also expand to more code (though probably less than the extra bytes required in the full translation table). In the trade-off, I decided to go with simplicity and most efficient code. Change-Id: I002d98318d236de0d27ffbea39d662cbed359985 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Trim the QString benchmark testThiago Macieira2014-08-099-76004/+2
| | | | | | | | | | | | | The comparison, Latin 1 and UTF-8 benchmarks contained in this file are stale. The implementation changed in Qt 5.3 and this benchmark couldn't be updated (test data too large for Qt). Please contact Thiago Macieira to obtain the benchmarks and test data. Change-Id: I48c19b1f1711eb73c953a30ed4da510e97a62472 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Integrate tst_bench_qringbuffer into the build tree.Alex Trotsenko2014-07-251-0/+1
| | | | | Change-Id: Id1d091889c3ba5e343d1237f016fdc22f7dfe413 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Fix compilation on ARM without ARMv6T2Thiago Macieira2014-07-251-3/+3
| | | | | | | | | | | | | | | | | | The "rbit" instruction requires ARMv6T2 or higher. This was found in the CI when building the imx6 target: Compiler: arm-poky-linux-gnueabi-g++ Flags: -mfloat-abi=hard -mfpu=neon Errors from the assembler: {standard input}:3078: Error: selected processor does not support ARM mode `rbit r3,r3' {standard input}:7341: Error: selected processor does not support ARM mode `rbit ip,ip' That compiler defaults to ARMv5T. That's obviously wrong for an i.MX 6, which is a Cortex-A9 (ARMv7), but the correction applies for older processors. Change-Id: I56c276fa411977dd7cd867d62adf021e4909302c Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Rewrite QRingBufferAlex Trotsenko2014-07-242-0/+91
| | | | | | | | | QRingBuffer is a fully inlined class used in many I/O classes. So, it must be as fast and small as possible. To this end, a lot of unnecessary special cases were replaced by generic structures. Change-Id: Ic189ced3b200924da158ce511d69d324337d01b6 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Fix some compiler warnings in benchmark tests.Friedemann Kleint2014-07-141-1/+5
| | | | | | | | | | | main.cpp(332) : warning C4307: '*' : integral constant overflow tst_qpainter.cpp(1293) : warning C4305: '+=' : truncation from 'double' to 'float' tst_qpainter.cpp(1474) : warning C4305: '+=' : truncation from 'double' to 'float' tst_qtbench.cpp(155) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data main.cpp(68) : warning C4189: 'fontHeight' : local variable is initialized but not referenced Change-Id: If6aadd50df7c5cf7d0f33791c9247730a47ddd27 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Check for boost header in sysrootRainer Keller2014-07-101-1/+1
| | | | | | | | The check has to detect if boost header is present in the system we are building for. Change-Id: I700a11df208c8852ba094d8bff387ad21fa309b2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Add a benchmark test for QCryptographicHashThiago Macieira2014-04-043-0/+192
| | | | | | | | | | | | | | | | | | | | | Some quick benchmarks against GNU coreutils 8.21 and OpenSSL 1.0.1e (time in µs; time for coreutils and OpenSSL include the loading of the executable): Qt Coreutils OpenSSL n SHA-1 SHA-224 SHA-512 SHA-1 SHA-224 SHA-512 SHA-1 SHA-224 SHA-512 0 0 0 0 717 716 700 2532 2553 2522 64k 120 484 381 927 1074 966 2618 2782 2694 Diff 120 484 381 210 358 266 86 229 172 The numbers for Qt are pretty stable and vary very little; the numbers for the other two vary quite a bit, since they involve launching and executing separate processes. We can take the lesson that we're in the same ballpark for SHA-1 and we should investigate whether our SHA2 implementation is sufficiently optimized. Change-Id: Ib081d002ed57c4f43741eca45ff5cd13b97b6276 Reviewed-by: Richard J. Moore <rich@kde.org>
* Update the qHash function for strings to use the CRC32 instructionThiago Macieira2014-01-233-14/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to my profiling of Qt Creator, qHash and the SHA-1 calculation are the hottest spots remaining in QtCore. The current qHash function is not really vectorizable. We could come up with a different algorithm that is more SIMD-friendly, but since we have the CRC32 instruction that can read 32- and 64-bit entities, we're set. This commit also updates the benchmark for QHash and benchmarks both the hashing function itself and the QHash class. The updated benchmarks for the CRC32 on my machine shows that the hashing function is *always* improved, but the hashing isn't always. In particular, the current algorithm is better for the "numbers" case, for which the data sample differs in very few bits. The new code is 33% slower for that particular case. On average, the improvement (including the "numbers" case) is: compared to qHash only QHash Qt 5.0 function 2.54x 1.06x Qt 4.x function 4.34x 1.34x Java function 2.71x 1.11x Test machine: Sandybridge Core i7-2620M @ 2.66 GHz with turbo disabled for the benchmarks Change-Id: Ia80b98c0e20d785816f7a7f6ddf40b4b302c7297 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Allow non-character codes in utf8 stringsKurt Pattyn2013-10-171-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | Changed the processing of non-character code handling in the UTF8 codec. Non-character codes are now accepted in QStrings, QUrls and QJson strings. Unit tests were adapted accordingly. For more info about non-character codes, see: http://www.unicode.org/versions/corrigendum9.html [ChangeLog][QtCore][QUtf8] UTF-8 now accepts non-character unicode points; these are not replaced by the replacement character anymore [ChangeLog][QtCore][QUrl] QUrl now fully accepts non-character unicode points; they are encoded as percent characters; they can also be pretty decoded [ChangeLog][QtCore][QJson] The Writer and the Parser now fully accept non-character unicode points. Change-Id: I77cf4f0e6210741eac8082912a0b6118eced4f77 Task-number: QTBUG-33229 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime - Remove some benchmark testsJohn Layt2013-09-231-83/+0
| | | | | | | | Remove benchmark tests that are no longer required as they are simple overloads of other methods. Change-Id: I610211543d17c077f482fa2145ac3da7d0767282 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime - Add QTimeZone supportJohn Layt2013-09-231-1/+90
| | | | | | | | | | | Add support to QDateTime for time zones using the new QTimeZone class. [ChangeLog][QtCore][QDateTime] Add support for a new Qt::TimeZone spec to be used with QTimeZone to define times in a specific time zone. Change-Id: I21bfa52a8ba8989b55bb74e025d1f2b2b623b2a7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime - Add Benchmark TestsJohn Layt2013-09-203-0/+612
| | | | | | | Add benchmark tests for QDateTime. Change-Id: I839f8bc81e6cae56d93539c7c3f999d9eec10ad7 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* Iterate over the smaller set in QSet::intersect().Mitch Curtis2013-06-052-0/+145
| | | | | | | | | | | | | | | | | | | | | | | | When calling intersect() on a large (1000000 items) QSet, with a small (1000 items) QSet as the argument, the function takes signifcantly longer than when the operand and the argument are reversed. This is because the operand set is always iterated over in its entirety. This patch changes intersect() to iterate over the smaller set. This reduces the large operand scenario's benchmark to ~0.000063 milliseconds, compared to the current ~134 milliseconds: 1000000.intersect(1000) = empty: 0.000063 (was 134) 1000.intersect(1000000) = empty: 0.000039 (was 0.000036) 1000000.intersect(1000) = 500: 0.10 vs (was 130) 1000.intersect(1000000) = 500: 0.023 vs (was 0.093) 1000000.intersect(1000) = 1000: 0.20 vs (was 139) 1000.intersect(1000000) = 1000: 0.017 vs (was 0.016) Task-number: QTBUG-22026 Change-Id: I54b25c49c78c458fef355e9c6222da8a64c7681f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove QLocalePrivate::m_localeIDhjk2013-04-233-0/+89
| | | | | | | | | | | | | | It was only used for toUpper/toLower but always computed in the constructor, including QString::toLatin1 conversion and allocations. This needlessly slows down all other uses, including supposedly "cheap" operations QString::toDouble, or accesses inside QResourceFileEngine. The benchmarks indicates that doing it always when needed is bearable. There's still a lot of improvement potential on these code paths. Change-Id: I88b637ee11f9f7ea614f8da4ec5df0bf40664fce Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Whitespace cleanup: remove trailing whitespaceAxel Waggershauser2013-03-164-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | Remove all trailing whitespace from the following list of files: *.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README excluding 3rdparty, test-data and auto generated code. Note A): the only non 3rdparty c++-files that still have trailing whitespace after this change are: * src/corelib/codecs/cp949codetbl_p.h * src/corelib/codecs/qjpunicode.cpp * src/corelib/codecs/qbig5codec.cpp * src/corelib/xml/qxmlstream_p.h * src/tools/qdoc/qmlparser/qqmljsgrammar.cpp * src/tools/uic/ui4.cpp * tests/auto/other/qtokenautomaton/tokenizers/* * tests/benchmarks/corelib/tools/qstring/data.cpp * util/lexgen/tokenizer.cpp Note B): in about 30 files some overlapping 'leading tab' and 'TAB character in non-leading whitespace' issues have been fixed to make the sanity bot happy. Plus some general ws-fixes here and there as asked for during review. Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* QVector - removeLast optimizeThorbjørn Martsum2013-03-071-0/+37
| | | | | | | | | | | | In case somebody uses QVector as a stack, it is not fair to have takeLast, removeLast and pop_back to do way too much work. This is still very slow compared to std::vector::pop_back (mostly due implicit sharing), however it is more than a factor faster than before. Change-Id: I636872675e80c8ca0c8ebc94b04f587a2dcd6d8d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMap - add insert overload that provide a hintThorbjørn Lund Martsum2013-03-061-0/+78
| | | | | | | | This adds a fast insert on QMap when providing a correct hint. Change-Id: I256bba342932c1d4f24c6e65074e1bf47b519537 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove QT_{BEGIN,END}_HEADER macro usageSergio Ahumada2013-01-291-4/+0
| | | | | | | | | | | The macro was made empty in ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb and is no longer necessary or used. Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html Change-Id: Id2bb2e2cabde059305d4af5f12593344ba30f001 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>