[BEAM-3612] Closurize method invocations #7161
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This wraps structuralDoFns in closures to avoid re-working the entire function analysis and binding stack. If we're going to generate code anyway, we may as well go all in.
Amends the benchmarks to include the "closurized" variation, and re-works the variable names to be (I hope) clearer than the previous iteration.
This is about the end of improving performance of StruturalDoFns invocation. Using the generation tool, it's possible to invoke methods ~20x faster than the reflective default path.
It's probably possible to do better by generating truly per function/per method specializations, rather than balancing with binary size, and always jump from the interface{} args straight to the actual function call, but I think we'd want to have that as an option in the shimx or starcgen packages, rather than do it all the time. That would permit users to balance binary size against speed.
Follow this checklist to help us incorporate your contribution quickly and easily:
[BEAM-XXX] Fixes bug in ApproximateQuantiles
, where you replaceBEAM-XXX
with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.It will help us expedite review of your Pull Request if you tag someone (e.g.
@username
) to look at it.Post-Commit Tests Status (on master branch)