| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Our code is much faster than libdbus-1, even when built in debug mode.
|
| | |_|_|/
| |/| | | |
|
|\ \ \ \ \
| |/ / / /
| | | | |
| | | | |
| | | | | |
Conflicts:
src/corelib/thread/qthread_unix.cpp
|
| |\ \ \ \
| | | |_|/
| | |/| | |
|
| |\ \ \ \
| | | |_|/
| | |/| |
| | | | |
| | | | | |
Conflicts:
src/corelib/thread/qthread_unix.cpp
|
| |\ \ \ \ |
|
| |\ \ \ \ \ |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The QMutex benchmark contains benchmarks for the native mutex type.
It was using pthread_mutex_t on Symbian, which isn't the true native
mutex type and so isn't really representative of true native
performance. Now it uses RMutex.
Task-number: QTBUG-13990
Reviewed-by: Shane Kearns
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The benchmark sometimes hung because wait conditions were sometimes
signalled before being waited for. This change adds a real condition to
control the interactions.
Task-number: QTBUG-13990
Reviewed-by: Shane Kearns
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This new test is added in anticipation of a native implementation of
QWaitCondition for Symbian.
Task-number: QTBUG-13990
Reviewed-by: Shane Kearns
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
changes include whitespace, parenting, recovering erroneously deleted
code etc.
Reviewed-by: Markus Goetz
|
| |_|_|_|/ /
|/| | | | |
| | | | | |
| | | | | |
| | | | | | |
Merge-Request: 2505
Reviewed-by: Peter Hartmann
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This was suggested by Matthias Kretz on my blog. It improves on GCC
(one case up to 5%), but worsens on ICC (up to 5%).
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Also add the Neon build flags
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
If the multibyte sequence crossed the end of the SSE2 area, then len
would have a wrong value and the data wouldn't be read.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The fromLatin1 code is very simple, yet the handwritten assembly
performs better due to the use of post-increments.
The fromUtf8 code has two alternatives. Neon lacks an instruction
similar to SSE2's _mm_movemask_epi8 (PMOVMSKB) which extracts one bit
from each byte and stores it in a register. We used that in the UTF-8
code to detect bytes with the highest bit set. To compensate, we used
two alternatives:
1) AND the comparison result with a vector containing {128, 64, ...,1 }
Do 3 parallel-adds (VPADD.I8), which will make the mask propagate
to the lowest component in the vector.
Trick found in: http://hilbert-space.de/?p=22 (comment 16-17)
2) Extract the two words from the doubleword Neon register and do the
work in ARM assembly.
It looks like the latter version is performing better.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This assumes that there are no overlong sequences, no continuation
characters without the leading, no missing continuations and no BOM.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
If there's an UTF-8 high byte in the first 8 bytes, don't
try to save the latter 8 characters
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This code is 2x faster than the original UTF-8 code and within 35% of
the pure Latin1 code
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This code is ~1.5x faster than the original UTF-8 code
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
For whatever reason, this code is worse than the stateful code...
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Also compare to the Latin1 functions. The UTF-8 algorithm in
Qt 4.7 right now is 109% slower than the unoptimised Latin-1
algo, 120% than the Qt 4.7 SSE2 code
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Currently are that the "improved SSE2" version and the SSE4.1 version
are yielding the best results, within 1% of each other. These results
are around 20% better than the Qt 4.7 code.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The more operations there are, the more time it takes. More
importantly, the more variables we touch, the more the compiler may
want to use the stack instead of registers.
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| |_|_|/ /
|/| | | | |
|