-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[Perf -29%] PerfLabTests.CastingPerf (2) #37803
Comments
Could be the cost of tiered compiler indirection showing up on a fast cast. Native implementation did not have that expense. The cost of tiering indirection could be easily avoided by opting out the casting helper from tiering. That would mean jitting it at start up time. We decided against that, since these are "fast" casts and generally not a perf concern. I will take a look to be sure. |
@VSadov the last time we chatted I believe you mentioned this perf was reasonable. Is there anything actionable here? |
@mangod9 Right. I just looked at this again to be sure. The code that we run here is the same as in the native implementation - these are simple cases that just compare the target interface against implemented interfaces (which in these benchmarks is a list of length 1). The difference is that the managed implementation is called via an extra indirection due to tiering callsite, which is a trade off for the start up latency. I think we can accept the current performance. It is unlikely to cause issues in real world scenarios. |
thanks for the follow up. Will close this out. @DrewScoggins is there anything required to track any further regressions in the future? |
BTW, I like that we have tests sensitive to this. |
Also, I think I can resolve #1994 , which was asking for impact of tiering on casting and it is exactly what we are looking at here. |
Run Information
Regressions in PerfLabTests.CastingPerf
Historical Data in Reporting System
Repro
Histogram
PerfLabTests.CastingPerf.CheckObjIsInterfaceNo
PerfLabTests.CastingPerf.CheckIsInstAnyIsInterfaceNo
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: