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
26 files changed
Lines changed: 3056 additions & 3048 deletions
File tree
- 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
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.
Large diffs are not rendered by default.
Lines changed: 47 additions & 47 deletions
Large diffs are not rendered by default.
0 commit comments