diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-01-18 11:39:28 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-01-21 14:08:01 -0800 |
commit | 2549f189951d47d7487c58c4e799bdeb487fa068 (patch) | |
tree | 8ff53916397c7b12da1af943ed0ac2194e8f7906 /src/tools/qdoc/doc/examples | |
parent | b5d480d01d9f8a3cd97c614f579008ac137c9174 (diff) |
QHash: rewrite the x86 aeshash function for len >= 16
The loop for 32 bytes is left unchanged, but the tail operation for 16
to 31 bytes is replaced with an overlapped load-and-scramble. This
should make the operation even faster.
Also updated the key creation back to something similar to what Go does.
This massively improves performance as well as the bit spread. Histogram
for the bits in the hash value for the testcase from QTBUG-91739:
|| Bit || Before || After ||
| 0 | 35.0300% | 50.4800% |
| 1 | 42.5250% | 50.2400% |
| 2 | 46.0100% | 50.0000% |
| 3 | 67.5150% | 49.9400% |
| 4 | 56.5150% | 50.0000% |
| 5 | 51.9950% | 50.0000% |
| 6 | 58.9800% | 50.1400% |
| 7 | 55.9550% | 50.0000% |
| 8 | 41.9850% | 49.9200% |
| 9 | 69.9700% | 49.6400% |
| 10 | 68.4950% | 50.0000% |
| 11 | 37.4950% | 50.3000% |
| 12 | 61.9950% | 49.8200% |
| 13 | 53.4900% | 50.0000% |
| 14 | 63.0200% | 49.9800% |
| 15 | 54.9700% | 50.1000% |
Task-number: QTBUG-91739
Pick-to: 6.2.3 6.2 6.3
Change-Id: Icad7c1bad46a449c8e8afffd16cb7fe7ffd3584f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/tools/qdoc/doc/examples')
0 files changed, 0 insertions, 0 deletions