Skip to content

Commit ecd5b18

Browse files
committed
expr.test: improve scoping performance
Replaced `nodesIncludingImported` and `where( x.InstanceOf)` combination with a direct call to `SModelOperations.nodesIncludingImported` in the TestSuite scope implementation. This change allows MPS to cache the model and concept tuple and improves scoping performance significant. In one project it reduced the model checking time by 30%. MPS doesn't support passing an expression to the concept part of nodesIncludingImported but only allows direct references to concepts and calling the underlying API directly was required.
1 parent 60eef47 commit ecd5b18

File tree

3 files changed

+26
-297
lines changed

3 files changed

+26
-297
lines changed

code/languages/org.iets3.opensource/languages/org.iets3.core.expr.tests/models/behavior.mps

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
<import index="wyuk" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.components(MPS.Core/)" />
5858
<import index="xfg9" ref="r:ac28053f-2041-47f6-806b-ecfaca05a64a(org.iets3.core.expr.base.runtime.runtime)" />
5959
<import index="pq1l" ref="r:93cd1fe8-b296-405c-a6e6-040c940ccfa1(org.iets3.core.expr.toplevel.plugin)" />
60+
<import index="i8bi" ref="r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)" />
6061
<import index="1ctc" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util.stream(JDK/)" implicit="true" />
6162
</imports>
6263
<registry>
@@ -405,7 +406,6 @@
405406
<concept id="6677504323281689838" name="jetbrains.mps.lang.smodel.structure.SConceptType" flags="in" index="3bZ5Sz">
406407
<reference id="6677504323281689839" name="conceptDeclaraton" index="3bZ5Sy" />
407408
</concept>
408-
<concept id="1182511038748" name="jetbrains.mps.lang.smodel.structure.Model_NodesIncludingImportedOperation" flags="nn" index="1j9C0f" />
409409
<concept id="1139613262185" name="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" flags="nn" index="1mfA1w" />
410410
<concept id="1139621453865" name="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" flags="nn" index="1mIQ4w">
411411
<child id="1177027386292" name="conceptArgument" index="cj9EA" />
@@ -2079,46 +2079,25 @@
20792079
</node>
20802080
<node concept="9aQIb" id="5$JCxfbTixX" role="9aQIa">
20812081
<node concept="3clFbS" id="5$JCxfbTixY" role="9aQI4">
2082-
<node concept="3clFbF" id="1KPsfaLJyXX" role="3cqZAp">
2083-
<node concept="2OqwBi" id="1KPsfaLJ_0C" role="3clFbG">
2084-
<node concept="37vLTw" id="1KPsfaLJyXV" role="2Oq$k0">
2082+
<node concept="3clFbF" id="5m_JEEZZMav" role="3cqZAp">
2083+
<node concept="2OqwBi" id="5m_JEEZZOeu" role="3clFbG">
2084+
<node concept="37vLTw" id="5m_JEEZZMat" role="2Oq$k0">
20852085
<ref role="3cqZAo" node="1KPsfaLJpk$" resolve="res" />
20862086
</node>
2087-
<node concept="X8dFx" id="1KPsfaLJ_ZE" role="2OqNvi">
2088-
<node concept="2OqwBi" id="5$JCxfbTwwl" role="25WWJ7">
2089-
<node concept="2OqwBi" id="5$JCxfbTwwm" role="2Oq$k0">
2090-
<node concept="2OqwBi" id="5$JCxfbTwwn" role="2Oq$k0">
2091-
<node concept="13iPFW" id="5$JCxfbTwwo" role="2Oq$k0" />
2092-
<node concept="I4A8Y" id="5$JCxfbTwwp" role="2OqNvi" />
2093-
</node>
2094-
<node concept="1j9C0f" id="5$JCxfbTwwq" role="2OqNvi" />
2095-
</node>
2096-
<node concept="3zZkjj" id="5$JCxfbTwwr" role="2OqNvi">
2097-
<node concept="1bVj0M" id="5$JCxfbTwws" role="23t8la">
2098-
<node concept="3clFbS" id="5$JCxfbTwwt" role="1bW5cS">
2099-
<node concept="3clFbF" id="5$JCxfbTwwu" role="3cqZAp">
2100-
<node concept="2OqwBi" id="5$JCxfbTwwv" role="3clFbG">
2101-
<node concept="37vLTw" id="5$JCxfbTwww" role="2Oq$k0">
2102-
<ref role="3cqZAo" node="5$JCxfbTww$" resolve="it" />
2103-
</node>
2104-
<node concept="1mIQ4w" id="5$JCxfbTwwx" role="2OqNvi">
2105-
<node concept="25Kdxt" id="5$JCxfbTwwy" role="cj9EA">
2106-
<node concept="2OqwBi" id="1mDdTGHog4" role="25KhWn">
2107-
<node concept="37vLTw" id="5$JCxfbTwwz" role="2Oq$k0">
2108-
<ref role="3cqZAo" node="5$JCxfbTgvQ" resolve="targetConcept" />
2109-
</node>
2110-
<node concept="1rGIog" id="1mDdTGHoKc" role="2OqNvi" />
2111-
</node>
2112-
</node>
2113-
</node>
2114-
</node>
2115-
</node>
2116-
</node>
2117-
<node concept="Rh6nW" id="5$JCxfbTww$" role="1bW2Oz">
2118-
<property role="TrG5h" value="it" />
2119-
<node concept="2jxLKc" id="5$JCxfbTww_" role="1tU5fm" />
2120-
</node>
2087+
<node concept="liA8E" id="5m_JEEZZP$o" role="2OqNvi">
2088+
<ref role="37wK5l" to="33ny:~List.addAll(java.util.Collection)" resolve="addAll" />
2089+
<node concept="2YIFZM" id="5m_JEEZZlEm" role="37wK5m">
2090+
<ref role="1Pybhc" to="i8bi:5IkW5anFaW6" resolve="SModelOperations" />
2091+
<ref role="37wK5l" to="i8bi:6cG5ul0xAxx" resolve="nodesIncludingImported" />
2092+
<node concept="2OqwBi" id="5m_JEEZZm93" role="37wK5m">
2093+
<node concept="13iPFW" id="5m_JEEZZlID" role="2Oq$k0" />
2094+
<node concept="I4A8Y" id="5m_JEEZZmPd" role="2OqNvi" />
2095+
</node>
2096+
<node concept="2OqwBi" id="5m_JEEZZKze" role="37wK5m">
2097+
<node concept="37vLTw" id="5m_JEEZZKjw" role="2Oq$k0">
2098+
<ref role="3cqZAo" node="5$JCxfbTgvQ" resolve="targetConcept" />
21212099
</node>
2100+
<node concept="1rGIog" id="5m_JEEZZKQC" role="2OqNvi" />
21222101
</node>
21232102
</node>
21242103
</node>
@@ -2127,6 +2106,7 @@
21272106
</node>
21282107
</node>
21292108
</node>
2109+
<node concept="3clFbH" id="5m_JEEZZ7lp" role="3cqZAp" />
21302110
<node concept="3clFbJ" id="1KPsfaLJFfq" role="3cqZAp">
21312111
<node concept="3clFbS" id="1KPsfaLJFfs" role="3clFbx">
21322112
<node concept="3clFbF" id="1KPsfaLJJ1T" role="3cqZAp">

code/languages/org.iets3.opensource/languages/org.iets3.core.expr.tests/org.iets3.core.expr.tests.mpl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@
162162
<dependency reexport="false">dbe08fb5-334d-4b64-86a0-622406fa0e87(org.iets3.core.expr.base.runtime)</dependency>
163163
<dependency reexport="false">b0f8641f-bd77-4421-8425-30d9088a82f7(org.apache.commons)</dependency>
164164
<dependency reexport="false">ecfb9949-7433-4db5-85de-0f84d172e4ce(de.q60.mps.libs)</dependency>
165+
<dependency reexport="false">9a4afe51-f114-4595-b5df-048ce3c596be(jetbrains.mps.runtime)</dependency>
165166
</dependencies>
166167
<languageVersions>
167168
<language slang="l:f3b3dc28-fee3-49e1-a46e-685e96389094:com.mbeddr.mpsutil.bldoc" version="0" />
@@ -283,6 +284,7 @@
283284
<module reference="8585453e-6bfb-4d80-98de-b16074f1d86c(jetbrains.mps.lang.test)" version="0" />
284285
<module reference="707c4fde-f79a-44b5-b3d7-b5cef8844ccf(jetbrains.mps.lang.test.runtime)" version="0" />
285286
<module reference="9ded098b-ad6a-4657-bfd9-48636cfe8bc3(jetbrains.mps.lang.traceable)" version="0" />
287+
<module reference="9a4afe51-f114-4595-b5df-048ce3c596be(jetbrains.mps.runtime)" version="0" />
286288
<module reference="b0f8641f-bd77-4421-8425-30d9088a82f7(org.apache.commons)" version="0" />
287289
<module reference="db8bd035-3f51-41d8-8fed-954c202d18be(org.iets3.analysis.base)" version="0" />
288290
<module reference="7b68d745-a7b8-48b9-bd9c-05c0f8725a35(org.iets3.core.base)" version="0" />

0 commit comments

Comments
 (0)