New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recover from minor performance regressions #35323

aartbik opened this Issue Dec 4, 2018 · 1 comment


None yet
1 participant

aartbik commented Dec 4, 2018

The control dep as data dep CL has landed and seems to stick. However, we had a few minor regressions (and one gain!) due to the change, most likely due to missed cases of looking under the hood of a check (but perhaps also due to missed LICM which may be unavoidable). This bug tracks if something can be done.

Bench2D | -6.03 % | RunTime | dart-aot | Odroid-C2 | linux-armv7hf | 
Meteor | -4.15 % | RunTime | dart-aot | Intel Xeon | linux-x64 |
ParticleSystemPaint | +8.88 % | RunTime | dart-aot | Intel Core 2 | linux-x64 |
SkeletalAnimation | -5.79 % | RunTime | dart-aot | Intel Core i5 | linux-x64 |
SkeletalAnimation | -7.62 % | RunTime | dart-aot | Intel Xeon | linux-x64 |
SkeletalAnimation | -4.77 % | RunTime | dart-aot | Odroid-C2 | linux-armv8 |
TypedData.Float64ListVarBench | -9.83 % | RunTime | dart-aot | Odroid-C2 | linux-armv7hf |

@aartbik aartbik added the area-vm label Dec 4, 2018

@aartbik aartbik self-assigned this Dec 4, 2018


This comment has been minimized.


aartbik commented Dec 4, 2018

For SkeletalAnimation, the extra data dependence has no adverse impact on performance. The full difference can be explained by lack of LICM on the non-speculative checks (in the past, we would hoist the checks as speculative checks, and then later convert them to non-speculative).

In this case, all the checks
(1) appear in a loop that is always taken at least once
(2) appear in the unconditional part, i.e. dominate back edges
(3) appear before anything "visible" happens

for such cases it is of course a waste not to hoist even non-speculative checks!

SkeletalAnimation(RunTime): 74.88025271433919 us.     // allow LICM on non-speculative check
SkeletalAnimation(RunTime): 82.62201896145744 us.     // no LICM on non-speculative (ToT status)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment