aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/statemachine
diff options
context:
space:
mode:
authorAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-05-05 14:38:16 +0300
committerAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-05-27 10:20:45 +0000
commit8b99e2019a860d31e49e0fbe9bcfd9981dc2b768 (patch)
tree5676e47db0f57eef4da6a42e58d40e3203c1e283 /src/imports/statemachine
parent818abf6a8cc9c862c10e14700f41b63006e9ecca (diff)
Imports: de-duplicate some expensive calls
QMetaMethod::parameterNames() contains internal loop, and we had quadratic behavior. Since operator[] was used with temp object, also we had detach()ing. QUrl::path() contains memory allocation. To avoid these issues cache results of functions. Change-Id: Ie4c3f0573a000342aff44de0dd4f744a146bb935 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/imports/statemachine')
-rw-r--r--src/imports/statemachine/signaltransition.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp
index 47efc9ec15..508e1e3685 100644
--- a/src/imports/statemachine/signaltransition.cpp
+++ b/src/imports/statemachine/signaltransition.cpp
@@ -78,8 +78,9 @@ bool SignalTransition::eventTest(QEvent *event)
// Set arguments as context properties
int count = e->arguments().count();
QMetaMethod metaMethod = e->sender()->metaObject()->method(e->signalIndex());
+ const auto parameterNames = metaMethod.parameterNames();
for (int i = 0; i < count; i++)
- context.setContextProperty(metaMethod.parameterNames()[i], QVariant::fromValue(e->arguments().at(i)));
+ context.setContextProperty(parameterNames[i], QVariant::fromValue(e->arguments().at(i)));
QQmlExpression expr(m_guard, &context, this);
QVariant result = expr.evaluate();