192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
1 | |
Как заставить JIT откомпилировать весь код сразу?23.05.2014, 06:58. Показов 2285. Ответов 22
Метки нет (Все метки)
При запуске программы возникают тормоза при первом обращении к методам около 3 сек, потом все работает мгновенно
Начал разбираться Функции JITCompiler известен вызываемый метод и тип, в котором он опреде- лен. JITCompiler ищет в метаданных соответствующей сборки IL-код вызываемого метода. Затем JITCompiler проверяет и компилирует IL-код в машинные коман- ды, которые сохраняются в динамически выделенном блоке памяти. После этого JITCompiler возвращается к структуре внутренних данных типа, созданной средой CLR, и заменяет адрес вызываемого метода адресом блока памяти, содержащего готовые машинные команды. В завершение JITCompiler передает управление коду в этом блоке памяти. Рассмотрим повторное обращение методу. К этому моменту код метода уже проверен и скомпилирован, так что обращение к блоку памяти производится напрямую, без вызова JITCompiler. Снижение производительности наблюдается только при первом вызове метода. Все последующие обращения выполняются «на максимальной скорости», потому что повторная верификация и компиляция не производятся. Как заставить JIT откомпилировать весь код сразу при запуске программы, а не дожидаться пока будет обращение к методу?
0
|
23.05.2014, 06:58 | |
Ответы с готовыми решениями:
22
Как заставить код принять с консоли сразу несколько переменных? Как заставить QMdiArea заполнять весь CentralWidet в Designer? Программно заставить откомпилировать *.pas файл Откомпилировать код как DLL |
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
23.05.2014, 07:57 [ТС] | 3 |
Spawn, не так не вариант, ибо придется бегать от компа к компу при установке , либо писать инсталятор
еще есть варианты? Добавлено через 13 минут Имеется ввиду может есть какие то директивы или атрибуты заставляющие JIT скомпилировать весь код (либо нужные методы) на стадии запуска программы?
0
|
23.05.2014, 09:08 | 4 |
Т.е. пересборка всей программы с добавленными атрибутами не потребует переустановки у пользователей?)
JIT не сразу даже весь метод может в нативный код превратить, так что каким-нибудь reflection тут не спасёшься... Поискать в чём причина тормозов не пробовали?
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
23.05.2014, 09:50 [ТС] | 5 |
Клиент серверное приложение, при первом запуске клиента набираю сообщение жму отправить подтверждение доставки приходит через 3 секунды , при последующих оправках подтверждение приходит мгновенно где искать если в методах ReceiveCallback и SendCallBack всего по три строчки кода и ничего лишнего нет?
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
23.05.2014, 10:02 [ТС] | 7 |
Spawn, обычные асинхронные сокеты
0
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
23.05.2014, 10:20 | 8 |
возьми да вызови этот метод вручную, пусть там первая же проверка на null сделает return
а вообще есть что-то такое, видел какой-то атрибут для методов на эту тему...сам вспомнить хотел недавно, но не вышло )
0
|
23.05.2014, 10:32 | 9 | ||||||||||
Так, сервер:
0
|
Кодогенератор
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
|
|
23.05.2014, 10:45 | 10 |
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
23.05.2014, 13:43 [ТС] | 12 |
Spawn, Характеристики компа на котором ты проверял?
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
23.05.2014, 14:41 [ТС] | 14 |
Celeron 1800 GHz 2GB RAM WinXP
Я даже затестить не смогу
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
23.05.2014, 15:05 [ТС] | 16 |
Spawn, Кто сказал что ХР уже свое отжила ?
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
23.05.2014, 16:14 [ТС] | 18 |
0
|
Master of Orion
|
|
23.05.2014, 17:15 | 19 |
EVG-1980, как откомпилировать JIT сразу это вопрос из разряда "как сделать холодный огонь и горячий лед". JIT подразумевает компиляцию в real-time. Шарп можно компилировать заранее, но смысла нет в этом. Лучше в фоне при загрузке методы прогони, и все.
0
|
23.05.2014, 18:27 | 20 |
async/await - паттерн, который используется с Task (System.Threading.dll), но вся магия заложена в компилятор, а не в библиотеки .NET определённой версии. В идеале нужна VS 2012, которая поддерживает ключевые слова async/await, но если извернуться, то на 2010 встаёт Async CTP, который морально устарел уже года 3 как, но всё же способен компилировать работоспособный код. Также требуется AsyncBridge, так как Microsoft официально сделал поддержку только для .NET 4
Добавлено через 1 минуту Всё названное довольно активно использовалось и в коммерческом продукте (который и сейчас работает в довольно крупной структуре) не смотря на свою версию 0.2
2
|
23.05.2014, 18:27 | |
23.05.2014, 18:27 | |
Помогаю со студенческими работами здесь
20
Как заставить Яндекс стереть инфу о сайте (весь кеш) Как заставить приложение сканировать весь компьютер вместо файла? Как заставить страницу открываться в Word-е сразу? Как прочитать текстовый файл не весь сразу, а только вторую строку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |