Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet24/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   20   21   22   23   24   25   26   27   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.1 .Модель.выполнения.кода.в.среде.CLR
Функции 
JITCompiler
известен вызываемый метод и тип, в котором он опреде-
лен. 
JITCompiler
ищет в метаданных соответствующей сборки IL-код вызываемого 
метода. Затем 
JITCompiler
проверяет и компилирует IL-код в машинные коман-
ды, которые сохраняются в динамически выделенном блоке памяти. После этого 
JITCompiler
возвращается к структуре внутренних данных типа, созданной средой 
CLR, и заменяет адрес вызываемого метода адресом блока памяти, содержащего 
готовые машинные команды. В завершение 
JITCompiler
передает управление коду 
в этом блоке памяти. Этот программный код является реализацией метода 
WriteLine
(вариант этого метода с параметром 
String
). Из этого метода управление возвра-
щается в метод 
Main
, который продолжает выполнение в обычном порядке.
Рассмотрим повторное обращение метода 
Main
к методу 
WriteLine
. К этому 
моменту код метода 
WriteLine
уже проверен и скомпилирован, так что обращение 
к блоку памяти производится напрямую, без вызова 
JITCompiler
. Отработав, метод 
WriteLine
возвращает управление методу 
Main
. На рис. 1.5 показано, как выглядит 
ситуация при повторном обращении к методу 
WriteLine
.
-ôàéë
Êîíñîëü
рис. 1.5.
.Повторный.вызов.метода


41
Исполнение.кода.сборки
Снижение производительности наблюдается только при первом вызове метода. 
Все последующие обращения выполняются «на максимальной скорости», потому 
что повторная верификация и компиляция не производятся.
JIT-компилятор хранит машинные команды в динамической памяти. Это зна-
чит, что скомпилированный код уничтожается по завершении работы приложения. 
Для повторного вызова приложения или для параллельного запуска его второго 
экземпляра (в другом процессе операционной системы) JIT-компилятору придется 
заново скомпилировать IL-код в машинные команды. В зависимости от приложения 
это может привести к существенному повышению затрат памяти по сравнению 
с низкоуровневыми приложением, у которых находящийся в памяти код доступен 
только для чтения и совместно используется всеми экземплярами приложения.
Для большинства приложений снижение производительности, связанное с ра-
ботой JIT-компилятора, незначительно. Большинство приложений раз за разом 
обращается к одним и тем же методам. На производительности это сказывается 
только один раз во время выполнения приложения. К тому же выполнение самого 
метода обычно занимает больше времени, чем обращение к нему.
Также следует учесть, что JIT-компилятор среды CLR оптимизирует машинный 
код аналогично компилятору неуправляемого кода C++. И опять же: создание 
оптимизированного кода занимает больше времени, но при выполнении он гораздо 
производительнее, чем неоптимизированный.
Есть два параметра компилятора C#, влияющих на оптимизацию кода, — 
/optimize
и 
/debug
. В следующей таблице показано их влияние на качество 
IL-кода, созданного компилятором C#, и машинного кода, сгенерированного JIT-
компилятором. 

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   20   21   22   23   24   25   26   27   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish