Mój współpracownik opublikował to pytanie wczoraj: 7-second EF startup time even for tiny DbContext.Entity Framework spinup znacznie wolniej na x64 vs x86
Po pobraniu kodu i przeniesieniu go do osobnego rozwiązania w celu wyizolowania go w jak największym stopniu, stwierdziłem, że cel platformy zawierającego projekt wywarł głęboki wpływ na środowisko uruchomieniowe procesu uruchamiania EF.
Podczas kierowania na x64, zobaczyłem, że test trwał ~ 7 sekund, aby zakręcić pierwszy DbContext i < 1 sekundę, aby zakręcić drugi DbContext (zgodny z ustaleniami mojego współpracownika, który jest również ukierunkowany na x64). Jednak po przełączeniu celu platformy na x86, pierwszy czas rozpędzania DbContext został skrócony o około 4 sekundy do 3.34633 sekundy, podczas gdy drugi DbContext zajmował tyle samo czasu co w przypadku x64.
W związku z tym wygląda na to, że struktura Entity Framework przechodzi znacznie odmienny proces inicjowania w przypadku systemu 64-bitowego w porównaniu z systemem 32-bitowym. Czy ktokolwiek ma jakiś wgląd w to, co dzieje się pod maską, aby to wyjaśnić?
Czy to może być sondowanie zespołu? Możesz spojrzeć na Fusion Log, by to sprawdzić. –
@CraigStuntz Sprawdziłem logi fuzji i nie widziałem niczego, co pojawiłoby się inaczej w x86 vs x64. – Sidawy
To jest interesujące. FYI EF nie ma żadnego kodu specyficznego dla architektury 32- lub 64-bitowej - to czysta IL. Jednak różnica jest ogromna. – Pawel