| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Непонятные тормоза компиляции |
| Автор: maxtech 25.11.2010, 13:56 | ||
| Есть небольшое тестовое приложение. Делал чтобы сравнить скорость процессоров. В нем есть большая функция. Очень большая, 5000 строк примерно. (Сделал копипастом) Есть кнопка, при нажатии которой запускается эта функция. Тестирую на двух компах: 1. AMD Athlon XP 3200+ (WinXP SP2) 2. Ноут на Intel P6100 (Win7 Ultimate) Странность заключается в сильных тормозах, которые возникают при запуске на ноуте в случае если приложение компилируется в режиме optimize code (пишу на C#, .NET2.0). Судя по всему, тормоза возникают при JIT-компиляции большой функции. При отключенной оптимизации или при запуске в debug-режиме из студии таких тормозов нет. Также нет тормозов при запуске с других компов. Тормоза только на ноуте. Код:
Результаты. На ноуте P6100 в debug-режиме: button1_Click: Button press. Current time: 13:39:33 Test: Function call. Current time: 13:39:34 Test: tickCount=5769369 Test: newTickCount=5771990 Test: Time=2621 x=146000000000 button1_Click: timediff=00:00:03.1356055 На том же ноуте при запуске .exe: button1_Click: Button press. Current time: 13:40:00 Test: Function call. Current time: 13:42:25 (время между вызовом функции и входом в неё - 02:25 мин!) Test: tickCount=5940362 Test: newTickCount=5942499 Test: Time=2137 x=150000000000 button1_Click: timediff=00:02:26.8742580 На Athlon XP 3200 (запуск .exe): button1_Click: Button press. Current time: 13:47:04 Test: Function call. Current time: 13:47:04 Test: tickCount=22233453 Test: newTickCount=22237078 Test: Time=3625 x=312500000000 button1_Click: timediff=00:00:03.7656250 С чем это может быть связано? |
| Автор: jonie 25.11.2010, 14:59 |
| Ну собственно с JIT компиляцией... при дебаге оптимизация как я знаю не проводится jit компилером, в отличие от релиза. |
| Автор: maxtech 25.11.2010, 15:21 |
| jonie, тормоза возникают только при соблюдении двух условий одновременно: 1. запуск exe 2. На ноуте Intel P6100. На Athlon 3200 таких тормозов нет. Я сейчас потестил экзешник на старом Duron 1100: button1_Click: Button press. Current time: 15:17:54 Test: Function call. Current time: 15:17:54 Test: tickCount=10005796 Test: newTickCount=10013187 Test: Time=7391 x=242000000000 button1_Click: timediff=00:00:07.3906250 Компиляция меньше секунды. На новом P6100 более двух минут. |