Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Предварительная компиляция

26K
07 августа 2008 года
vitaliy_lyakh
33 / / 03.11.2007
Можно ли как-то избежать тормозов (финальной компиляции JIT) при первом запуске приложения? Или, допустим, можно ли скомпилировать обычное Win32 приложение из сборки .NET?
5
07 августа 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: vitaliy_lyakh
Можно ли как-то избежать тормозов (финальной компиляции JIT) при первом запуске приложения?

ngen в помощь.

Цитата: vitaliy_lyakh
Или, допустим, можно ли скомпилировать обычное Win32 приложение из сборки .NET?

Можно. Утиллиты были, но они много денег стоят. Но на мой взгляд это бессмысленно.

26K
08 августа 2008 года
vitaliy_lyakh
33 / / 03.11.2007
Цитата: hardcase
ngen в помощь.



То есть я должен буду обернуть мое приложение в инсталлятор, и после копирования этого приложения в директорию вызвать для него ngen? И где будет храниться мой скомпилированный код?

5
08 августа 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: vitaliy_lyakh
То есть я должен буду обернуть мое приложение в инсталлятор, и после копирования этого приложения в директорию вызвать для него ngen?

Мне казалось VS умеет создавать инсталл-проекты с автоматической прекомпиляцией сборок, но это всеголишь предположение - еще не доводилось их создавать.

Цитата: vitaliy_lyakh
И где будет храниться мой скомпилированный код?

Это головная боль ngen-а, он помещает код в кэш прекомпилированных сборок.

26K
08 августа 2008 года
vitaliy_lyakh
33 / / 03.11.2007
То есть после компиляции я буду уверен, JIT для него уже не будет вызываться?
5
09 августа 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: vitaliy_lyakh
То есть после компиляции я буду уверен, JIT для него уже не будет вызываться?

Зависит от вашего кода. Если например используется кодогенерация в рантайме то JIT будет вызываться (например при xml-сериализации). Также некоторые специфические операции с отражением могут приводить к генерированию кода (вызов метода например) или инстранциирование параметрических типов.
Никогда нельзя сказать точночто код полностью сгенерирован статически - это свойство управляемого кода. Считайте это плюсом или минусом.

26K
10 августа 2008 года
vitaliy_lyakh
33 / / 03.11.2007
Главное, чтоб JIT заново не компилировал сборку, например, при падении системы или в других случаях...
5
10 августа 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: vitaliy_lyakh
Главное, чтоб JIT заново не компилировал сборку, например, при падении системы или в других случаях...

Сборка компилируется один раз за сессию системы - до следующей перезагрузки. Т.е. при первом запуске приложения, обычно падение производительности в этом случае не считается критичным.

341
10 августа 2008 года
Der Meister
874 / / 21.12.2007
Цитата: hardcase
Сборка компилируется один раз за сессию системы - до следующей перезагрузки. Т.е. при первом запуске приложения, обычно падение производительности в этом случае не считается критичным.


Windows Vista поступает с приложениями .NET так же? То есть, в ней тоже кэш хранится до завершения сессии?

26K
11 августа 2008 года
vitaliy_lyakh
33 / / 03.11.2007
Плохо что нельзя скомпилить сборку раз и навсегда
26K
11 августа 2008 года
vitaliy_lyakh
33 / / 03.11.2007
Думаю, в таком случае, нужно создать обычное Win32 приложение, которое в отдельном потоке запускало бы сборку, а в главном потоке : "Подождите, приложение запускается..."
5
11 августа 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: vitaliy_lyakh
Думаю, в таком случае, нужно создать обычное Win32 приложение, которое в отдельном потоке запускало бы сборку, а в главном потоке : "Подождите, приложение запускается..."

А смысл? Оно запускается то ррраз и все. :D
Вы VisualStudio видели? Или SharpDevelop?
JIT не компилирует всю сборку целиком - это только ngen позволяет оптом. Единица компиляции JIT это метод. По мере вызова методов в приложении компилируется весь управляемый код.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог