-
Notifications
You must be signed in to change notification settings - Fork 107
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] Add IID Lookup Optimization #849
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
manodasanW
reviewed
May 20, 2021
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
src/Tests/AuthoringConsumptionTest/AuthoringConsumptionTest.vcxproj
Outdated
Show resolved
Hide resolved
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
manodasanW
reviewed
May 21, 2021
j0shuams
force-pushed
the
jlarkin/GuidPatcher
branch
from
May 21, 2021 02:16
a0f0a5d
to
52f5c99
Compare
j0shuams
force-pushed
the
jlarkin/GuidPatcher
branch
from
May 24, 2021 21:03
6ce7b4e
to
d4baf0b
Compare
j0shuams
force-pushed
the
jlarkin/GuidPatcher
branch
from
May 25, 2021 23:59
b83c384
to
2f3128c
Compare
Scottj1s
reviewed
Jun 1, 2021
Scottj1s
reviewed
Jun 1, 2021
Scottj1s
reviewed
Jun 1, 2021
Scottj1s
reviewed
Jun 1, 2021
src/Tests/AuthoringWinUITest/AuthoringWinUITest (Package)/build/Microsoft.WinUI.AppX.targets
Outdated
Show resolved
Hide resolved
Scottj1s
reviewed
Jun 1, 2021
Should we and can we run the IID optimizer on WinRT.Runtime? |
…brary dependencies we distribute
j0shuams
force-pushed
the
jlarkin/GuidPatcher
branch
from
July 14, 2021 23:01
c8e26cb
to
ea4431f
Compare
manodasanW
reviewed
Jul 14, 2021
manodasanW
reviewed
Jul 14, 2021
manodasanW
reviewed
Jul 14, 2021
manodasanW
reviewed
Jul 15, 2021
j0shuams
force-pushed
the
jlarkin/GuidPatcher
branch
from
July 15, 2021 15:33
c1de3fa
to
db582bf
Compare
manodasanW
reviewed
Jul 16, 2021
manodasanW
reviewed
Jul 16, 2021
manodasanW
approved these changes
Jul 16, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 PR adds guid optimization to all assemblies that use cswinrt. Any time an interop assembly would call for a guid (GetIID, say), we replace that call with a look up in a static map from types to guids.
Using .targets, we run the patcher on a target assembly and pass along the references that assembly has, and copy out the patched assembly mid-build so that the one copied to the bin dir must be the patched dll.
The optimizer comes with an "opt out" in case we need to turn it off for any new issues that might arise in it. The opt out is "CsWinRTIIDOptimizerOptOut" and just needs to be set to "true" in the target assembly's project file.
For testing we know that a set of our unittests cover the codepaths used by the optimizer. The async tests and the storage file/folder tests cover the nontrivial code paths. We have also tested that the symbols files written by the optimizer for the patched dll are usable.
There is an addition to the TestComponentCSharp that arose from a bug in a tool used by the optimizer. The optimizer uses Mono.Cecil nuget package, and on version 0.11.3 of Cecil there was a bug writing long class names to pdb files. I added a new runtime class with a long, nonsensical name, and a unit test that would call for an event on this class. This reproduces the error we originally saw with 0.11.3, and verifies that the Cecil fix in 0.11.4 works for us.
Also, there was a version mis-match in the TestWinRT repo that caused local build issues. This was fixed by a PR on TestWinRT, and we reflect that by updating the commit used to checkout TestWinRT in our local .cmd.
Closes #686