Я взял ваш пример кода и провел его через различные конфигурации:
.NET Core from VS Release x64 - 37214 ms with (9171, 3, 0) CC
.NET Core from VS Release x86 - 69903 ms with (7673, 6, 0) CC
.NET Core from VS Release Any - 35694 ms with (9171, 3, 0) CC
.NET Core using EXE Release x64 - 37995 ms with (9171, 3, 0) CC
.NET Core using EXE Release x86 - 72489 ms with (7673, 7, 0) CC
.NET Core using EXE Release Any - 36106 ms with (9171, 3, 0) CC
.NET Framework 4.7.2 from VS Release x64 - 49697 ms with (5935, 4, 0) CC
.NET Framework 4.7.2 from VS Release x86 - 81324 ms with (4945, 8, 0) CC
.NET Framework 4.7.2 from VS Release Any - 80521 ms with (4945, 8, 0) CC
.NET Framework 4.7.2 using EXE Release x64 - 49450 ms with (5935, 4, 0) CC
.NET Framework 4.7.2 using EXE Release x86 - 80418 ms with (4945, 8, 0) CC
.NET Framework 4.7.2 using EXE Release Any - 80458 ms with (4945, 8, 0) CC
.NET Core using dotnet run x64 - 37614 ms with (9171, 3, 0) CC
.NET Core using dotnet run no tiered compilation x64 - 37186 ms with (9171, 3, 0) CC
Из этого казалось, что между x86
и x64
существует довольно большая разница. Вы пробовали форсировать режим x64
как в VS, так и из командной строки. Dlls могут быть скомпилированы в Any, но все еще имеют предпочтение для x86.
Кроме того;Судя по моим тестам, .NET Core работал лучше, чем .NET Framework 4.72.
Я пытался отключить многоуровневую компиляцию в .NET Core, а иногда это могло привести к проблемам с производительностью, но не выявило реальной разницы. .
Я понимаю, что это не одобряется в StackOverflow, но так как конфигурации проекта могут быть сложными для размещения в посте, я решил добавить пример кода, который использовал здесь: https://github.com/mrange/CodeStack/tree/master/q58675873/FsPerfSo
OP может видетьесли возможно воспроизвести мои цифры на машине OP.
Так что с моей точки зрения .NET Core выглядит лучше, чем .NET Framework, но почему?
Глядя на код через dnSpy
Я могу 'Рассказать о существенных различиях между кодом OP для .NET Core или .NET Framework. Однако, глядя на зависимости System.Numerics
, я могу заметить довольно существенные различия между .NET Core и .NET Framework версией System.Numerics
.
. Эта версия новее в .NET Core для System.Numerics
, но онане уверен, что они следуют одному и тому же версионированию (4.1.2.0
для .NET Core и 4.0.0.0
для .NET Framework).
Так что, с моей точки зрения, обязательно используйте x64
и .NET Core.