Commit 780b5f0
committed
Reduce allocations
The structure of getting a `PortableExecutableReference` meant that we
were essentially paying for `byte[]` twice. The first is generating the
`byte[]` for the resource and then when that was passed to
`CreateFromImage` it was converted to an `ImmutableArray<byte>` which
means there is yet another `byte[]` allocation. To avoid this the code
now just directly allocates the `ImmutableArray<byte>` and passes that
to `CreateFromImage`.
This can save up to 45MB in certain cases I was looking at in the Roslyn
tests.1 parent 3865c99 commit 780b5f0
File tree
26 files changed
+3056
-3048
lines changed- Src
- Basic.Reference.Assemblies.AspNet80
- Basic.Reference.Assemblies.AspNet90
- Basic.Reference.Assemblies.Net20
- Basic.Reference.Assemblies.Net35
- Basic.Reference.Assemblies.Net40
- Basic.Reference.Assemblies.Net461
- Basic.Reference.Assemblies.Net472
- Basic.Reference.Assemblies.Net50
- Basic.Reference.Assemblies.Net60Windows
- Basic.Reference.Assemblies.Net60
- Basic.Reference.Assemblies.Net70
- Basic.Reference.Assemblies.Net80Windows
- Basic.Reference.Assemblies.Net80
- Basic.Reference.Assemblies.Net90
- Basic.Reference.Assemblies.NetCoreApp31
- Basic.Reference.Assemblies.NetStandard13
- Basic.Reference.Assemblies.NetStandard20
- Basic.Reference.Assemblies.UnitTests
- Basic.Reference.Assemblies
- Generate
26 files changed
+3056
-3048
lines changedLarge diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Lines changed: 47 additions & 47 deletions
Large diffs are not rendered by default.
0 commit comments