Optimize QHash usage in RenderShader::updateUniforms.

It allocated a temporary QList of keys and repeatedly queried the
items in the hash, incurring relatively slow QString hashing.

Using iterators instead we can get rid of the temporary QList and
safe the hash computations on the outer list.

Profiling with Linux perf shows that the relative cost of this
function drops from around 2.0% to less than 0.5%.

Change-Id: Ic6a3c3ed7b6b4242e763a0b21987d543021de332
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Optimize QNodePrivate::_q_onNodePropertyChanged slightly.

1) Bail out early if possible.
2) Do not query the property hash twice.

Note that the code in general should probably be rewritten.
Querying the sender signal index is notoriously slow.

Change-Id: I530f6aeb52e01a3a9fbe152f7364735bb5ea7add
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Optimize QHash usage in RenderView::setShaderAndUniforms.

Do not allocate a temporary list of keys to iterate over. Use
iterators directly.

Change-Id: Ic422b2b6ec8ba80e94ff95a7fa1edb4ec3f6e666
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Optimize QHash usage in RenderView::setShaderAndUniforms.

operator[] returns a reference to a default-constructed value
if that does not exist yet. A default-constructed int is 0.

Change-Id: Ic4edcab5893a8601ef705fb17cbbf6a2e84884aa
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>