Имаме .NET приложение, написано на VB .NET 4.0 / VS2010, компилирано с всички проекти, настроени на настройката AnyCPU както за конфигурация Debug, така и Release. Забелязахме, че когато това приложение се изпълнява в 64-битова среда (тествано на Windows Server 2003 R2 и 2008 R2), приложението след това отнема поне двойно повече време (в абсолютно изражение около 25 секунди) за разлика от около 6-12 секунди в 32-битова среда (Win XP и 7), за да стартирате.
Трябва да добавя, че 64 битовите системи са мощни сървъри, определено по-мощни от другите тествани 32 битови системи. Всички други приложения бяха по-бързи на 64 бита, но не и нашето лошо приложение ;) (И тествахме приложенията по различно време, при различно натоварване и резултатите винаги са почти еднакви.)
Както беше казано по-горе, приложението е създадено с помощта на AnyCPU и работи като 64-битова сборка под 64-битова операционна система (проверено чрез TaskManager). Самото приложение е приложение WinForms, което използва NetAdvantage Forms v10.3 и редовно прави заявки и пише на MS SQL Server 2008.
Всички различни целеви машини са в една и съща мрежа, така че пътят до базата данни (същата база данни беше използвана за тестовете за производителност) например е един и същ, не мисля, че проблемът е около базата данни или самата мрежа.
Едно нещо, което забелязах, което ми се стори странно, беше, че когато изградих различни „стъпки за профилиране“, използвайки хронометър по време на стартирането на нашия MainForm, методът InitializeComponent отне два пъти повече време на 64 бита, около 4 секунди за разлика от 1,5 на 32 бита.
Това е едно и също приложение, което внедряваме и в двете системи, без различна конфигурация.
Така че имам два въпроса:
Някаква идея каква може да е причината за това?
И: Кой е най-добрият начин за определяне на "проблемните" части от код? В момента използвам хронометри и се опитвам да го стесня. Но ми се струва, че всичко е по-бавно на 64-битовите машини, що се отнася до нашето приложение, така че не съм много сигурен, че мога да го разделя на конкретни твърдения.
Благодаря на всички за помощта, много оценявам...
Profiler
с помощта наPerformance Wizard
във Visual Studio. - person Moon   schedule 19.10.2012