.NET 3.5 SP1 получает улучшенную производительность при запуске, больше не проверяя строгое имя сборок, которые поступают из надежных расположений. Немного спорный в моей книге, но несколько оправданы.
Я проверил, обходит ли 64-битная версия CLR этот трудоемкий этап. Подписал DLL, поместил ее в GAC, затем пропатчил байт. Никаких нареканий при загрузке сборки. Таким образом, разница не в улучшении запуска SP1.
Другие факторы во время запуска:
- Загрузка CLR с диска (только холодный старт)
- унижение для зависимых сборок
- JIT компилирует код запуска
Coldstart вполне может быть фактором, вероятно, у вас не запущены другие процессы, на которых загружена 64-битная версия CLR. Легко устранить, запустив фиктивное приложение .NET во время теста.
По той же причине может потребоваться больше времени для сборки. Маловероятно, что 64-битные ngen-редактированные образы сборок .NET находятся в кеше файловой системы. Опять же, легко устранить с помощью фиктивного приложения, имеющего зависимость от одних и тех же сборок.
64-битный JITter - более крепкий орешек. Произвольный вызов состоит в том, чтобы предположить, что MSFT не тратит столько времени на выполнение этого одного исполнения, как 32-битный JITter. Ничто не подкреплено никакими доказательствами. Также сложно измерить, вам нужно будет загрузить сборку с помощью Assembly.Load, а затем активировать Activator.CreateInstance (), где конструктор класса вызывает как можно больше кода.