| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|\ \
| |/ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The previous code tried to do caching of queries with constraints too,
but it's usecase was rather limited.
The caching worked for the simple case of
effectiveSizeHint(Qt::PreferredSize, QSize(10, -1));
effectiveSizeHint(Qt::PreferredSize, QSize(10, -1)); // uses cache
The problem was that if somebody called this sequence:
effectiveSizeHint(Qt::PreferredSize, QSize(10, -1));
effectiveSizeHint(Qt::PreferredSize, QSize(-1, -1));
effectiveSizeHint(Qt::PreferredSize, QSize(10, -1));
Each call would disregard the cache because the constraint was
different.
Now the pattern is used in the qgridlayoutengine itself when we
calculate hfw: (yes, height-for-width).
First, we ask for the horizontal size hints with no constraints.
Then, we'll ask for the vertical size hints with constraints.
Since horizontal and vertical ultimately comes from the same function
(effectiveSizeHint) it will invalidate the cache each time.
The solution is to add another cache for the sizeHints with
constraints.
The most notable improvement is in the hfw, nested case. Result:
RESULT : tst_QGraphicsLinearLayout::heightForWidth():"hfw, nested":
546 msecs per iteration (total: 546, iterations: 1)
RESULT : tst_QGraphicsLinearLayout::heightForWidth():"hfw, nested":
0.000029 msecs per iteration (total: 62, iterations: 2097152)
Improvement: 18,827,586 times faster (!!)
|
| | |
|
|/ |
|
|
|
|
|
| |
Fix the generator and the generated file to ensure that the string
"generated" appears in the first line.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
> data.cpp:2: error: 'ushort' does not name a type
> data.cpp:1133: error: 'ushort' does not name a type
and lot of
> data.cpp:1276: error: too many initializers for 'StringCollection'
when the issue with ushort is fixed (by including qglobal.h, for example)
a bunch of some new build errors occurs:
> data.cpp:4: error: 'stringCollectionData' was declared 'extern' and later 'static'
> data.h:54: error: previous declaration of 'stringCollectionData'
> data.cpp:1131: error: redefinition of 'struct StringCollection'
> data.h:48: error: previous definition of 'struct StringCollection'
> data.cpp:1136: error: invalid type in declaration before '=' token
> data.cpp:1136: error: conflicting declaration 'int stringCollection []'
> data.h:55: error: 'stringCollection' has a previous declaration as 'StringCollection stringCollection []
> data.cpp:1279: error: 'stringCollectionCount' was declared 'extern' and later 'static'
> data.h:56: error: previous declaration of 'stringCollectionCount'
Merge-request: 910
Reviewed-By: Thiago Macieira <thiago.macieira@nokia.com>
|
|
|
|
|
|
|
| |
qdeclarativeglobal and tst_creation.cpp
Task-number:
Reviewed-by: Martin Jones
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After commit 4363d4eebce4afd2ce3b3d6da205f8037357099a, createUuid()
would create a QFile, open it, read from it, and destroy it. This
resulted in a pretty serious performance regression (report says around
2000 times slower, I measured 3600 times slower on my machine).
This change creates one QFile per thread (since QFile is not thread
safe) and leaves the file open until the thread exits (at which point
QThreadStorage deletes the QFile).
This approach is around 600 times faster than the current code, which is
around 6 times slower than the original. Unfortunately, it is not
possible to restore the original performance without reintroducing the
problems that the commit mentioned above had fixed.
Benchmark is included.
Task-number: QTBUG-13877
Reviewed-by: thiago
Reviewed-by: mgoetz
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: (27 commits)
Revert "QDeclarativeDebugService: Add bc autotest" to get changes through staging.
Doc clarification.
Fallback to A8 text rendering on Mac when LCD smoothing is disabled
Recreate Qt 4.7 branch QtDeclarative def files on top of changes made to Qt 4.7.1
Autotest that new "import Qt 4.7"s aren't added accidentally
Document "import QtQuick 1.0" change
Replace "import Qt 4.7" with "import QtQuick 1.0"
Add test for Qt 4.7 module
Replace all occurances of "Qt 4.7" with "QtQuick 1.0"
Correct property type of PathAttribute::value in the docs.
Register QtQuick 1.0 module.
Remove unused AST node destructors.
Fix crash when trying to append a null transform to QDeclarativeItem.
Documentation.
Documentation fix for Flickable (mark content properties as real, not int).
QDeclarativeDebugClient: Fix gcc warning
QmlDebugService: Check that there is a receiver before sending messages
If a type is registered under several names, share the attached property object
QmlViewer: Fix typo in comment
QmlViewer: Fix assert on exit (Windows)
...
|
| |
| |
| |
| |
| | |
Task-number: QTBUG-13799
Reviewed-by: Martin Jones
|
|/
|
|
|
| |
Task-number: QTBUG-14013
Reviewed-by: Peter Hartmann
|
| |
|
|
|
|
|
|
| |
for inverting the result
On 32-bit, we're out of registers already, so this variable ended up in memory
|
|
|
|
| |
support them (e.g. ARM)
|
|
|
|
| |
Even though this function *only* does aligned loads, it's worse than the other function
|
| |
|
| |
|
|
|
|
|
|
| |
This results in no change on the Core-i7, but another 2.6% on the Atom
(so it's now 8% better than 4-byte loads and 31% better than current
code)
|
|
|
|
|
|
|
|
|
|
|
| |
The results on i7 are 32% improvement over current code, 13%
improvement over 4-byte loads, 6% over the unaligned SSSE3
loads. However, it's about 2.5% slower than pure SSE2 code due to
complexity.
The results on Atom are 30% improvement over current code, 7% over
4-byte loads, 15% over pure unaligned SSE2 and 9% over unaligned
SSSE3.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This is a different technique of aligning. Instead of reading some
bytes before the string, we will read some bytes of the string twice.
Best results are only 2% improvement over the unaligned SSE2 on a
Core-i7.
|
|
|
|
|
| |
First results make it 34% faster than current ucstrncmp, 16% faster than
the 32-bit version.
|
| |
|
|
|
|
|
| |
This speeds up the writing of algorithms, so I don't have to recompile
megabytes of data dumps.
|
|
|
|
|
|
| |
Also use the real-world data that I collected. The resulting files are
quite large, so I've added to Git only the smallest dump (apparently
Teambuilder scanning the environment for "TEAMBUILDER=").
|
| |
|
| |
|
|
|
|
|
| |
It's currently slightly worse than SSE2 with prolog aligning
(i.e., it's no good)
|
|
|
|
|
|
|
|
|
| |
Instead of using a non-SIMD method for aligning, we instead load more bytes
from p1 and use the PALIGNR instruction to realign to what we want.
The result is that it's bit slower than the non-SIMD comparison, due to the
complexity. For strings over 8 QChars wide, it's only slightly worse than
the non-SIMD comparison.
|
|
|
|
|
|
|
| |
The prolog tries to align p1 to a multiple of 16, so as to run
aligned loads, which are faster. Unfortunately, my tests so far
indicate that the prolog ends up taking longer than the benefit
of having aligned loads.
|
|
|
|
|
| |
This function uses unaligned loads. I'll try to write one with
aligned loads later.
|
|
|
|
| |
This is a copy of qMemEquals from qstring.cpp
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
Cocoa: revert parts of cc6dc0aeefde881a95f5fea2b26f2f3d7bdc6e15
Cocoa, Autotest: disable autotest that was added a bit premature
make error messages consistent
Add tests/benchmarks/README
qgrayraster: Remove unnecessary indirection in QT_FT_Outline_Decompose
Cocoa: add autotest to be more safe regarding child window stacking
Fix compilation: QT_NO_TEXTSTREAM
exclude QtXmlPatterns from the completeness assessment
fix QMAKE_SUBSTITUTES with shadow builds
Outline / fill inconsistency in X11 paint engine.
Cocoa: parent windows shows on screen when they should be hidden
Prevented Xorg crash in qtdemo when running corkboards example.
|
| |
| |
| |
| |
| |
| | |
With some information from the dev mailing list.
Reviewed-by: Thiago
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SSSE3 provides two tools to improve the blending speed over SSE2:
-palignr
-byte permutation
The alignement is enforced on src and dst with palignr to always make
aligned access.
The extraction of the alpha mask is done with a byte permutation in
order to save two instructions per cycle.
On Atom, this patch gives between 0% (aligned src) to 10% of
improvement (unaligned 4 and 12 bytes).
On Core 2, this patch gives consistently 8% to 10% of improvement
for every miss-alignment.
Reviewed-by: Samuel Rødal
|
|
|
|
| |
Reviewed-by: hjk
|
|
|
|
|
|
| |
On Atom, comp_Source is 280% faster with the SSE2 implementation.
Reviewed-by: Andreas Kling
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/3rdparty/webkit/VERSION
src/3rdparty/webkit/WebKit/qt/ChangeLog
src/gui/itemviews/qlistview.cpp
tests/auto/qlistview/tst_qlistview.cpp
tests/auto/qnetworkreply/test/test.pro
tests/auto/qsocks5socketengine/qsocks5socketengine.pro
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
These test cases are not considered reasonable for a small screen device
(625 widgets). Patching the QWidget code to use iteration rather than
recursion is considered too risky, as the code is performance critical.
Task-number: QTBUG-8512
Reviewed-by: Bjoern Erik Nilsen
|
| |
| |
| |
| |
| | |
Task-number: QT-9377
Reviewed-by: Joao
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Converting from RGB encoded on 24bits to RGB encoded on 32 bits is
quite inefficient.
This type of conversion is common for some image format.
The patch implement the conversion with SSSE3. This reduce by 3 the
number of instructions, pushing the bottleneck to memory bandwidth.
On Atom N450, the new benchmark is 40% faster for scanlines of
2000 pixels, 30% faster for scanlines of 32 pixels, and 15% slower
for small images (3 and 8px).
Reviewed-by: Olivier Goffart
|
| | |
|