|
|
Postitatud 15.02.2024 17:17:46
|
|
|
|

Terminoloogia
CLI: Common Language Infrastructure on .NET raamistiku spetsifikatsioon, mis määratleb keelesõltumatu, arhitektuurideülest käitusaega. Seetõttu saame arendada tarkvara erinevates kõrgetasemelistes keeltes spetsifikatsiooni alusel, mis suudab töötada erinevates arvutiarhitektuurides ilma muudatusteta
CLR: Common Language Runtime. on spetsifikatsioon, mis tagab, et töökeskkond on keelest sõltumatu ja arhitektuurideülene
CTS: Common Type System
CLS: Ühise keele spetsifikatsioon
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler kompileerib keerukate keelte lähtekoodi vahekeeltesse.
JIT: Just In Time Compiler kompileerib vahekeele masinkoodiks, mida arvuti mõistab ja mida saab seejärel käivitada
Lähtekood kompileeritakse IL-i C# kompilaatoriga (st programmid, dll-id, ex-failid jne). CLR laadib need IL-id, kompileerib need masinkoodiks JIT-i kaudu ja käivitatakse lõpuks, nagu näidatud järgmisel joonisel:
JIT (Just-in-time kompilaator) kompileeritakse jooksvalt
Just-in-time kompilaator (JIT) on osa .NET Common Language Runtime'ist (CLR) ja vastutab . .NET programm, sõltumata sellest. .NET programmeerimiskeel. Keelespetsiifilised kompilaatorid teisendavad lähtekoodi vahekeelteks. See vahekeel teisendatakse seejärel masinkoodiks just-in-time (JIT) kompilaatori poolt. See masinkood on spetsiifiline arvutikeskkonnale, kus JIT-kompilaator töötab. JIT kompilaatoritöö: JIT kompilaatorid peavad kiirendama koodi täitmist ja pakkuma tuge mitmele platvormile. Nii see töötab:
JIT-kompilaator teisendab Microsoft Intermediate Language'i (MSIL) või Common Intermediate Language (CIL) masinkoodiks. See tehakse enne MSIL-i või CIL-i sooritamist. MSIL teisendatakse vajadusel masinkoodiks, st JIT kompilaator kompileerib MSIL-i või CIL-i vastavalt vajadusele, mitte ei kompileeri kogu koodi. Salvesta kompileeritud MSIL või CIL nii, et seda saaks vajadusel kasutada järgmiste kõnede jaoks.
JIT plussid:
- Seda saab kompileerida ja genereerida reaalajas vastavalt praegusele riistvaraolukorrale
- Optimaalne masinakäskude jada saab genereerida vastavalt praegusele programmitoimingule
- Kui programm peab toetama dünaamilist linkimist, saab ta kasutada ainult JIT kompileerimismeetodit
- Koodi saab kohandada vastavalt mälu tegelikule olukorrale protsessis, et mälu paremini ära kasutada
JIT miinused:
- Kompileerimine nõuab käitusaja ressursse, mis põhjustab protsessi tõrke käivitamisel
- Kompileerimine võtab tööaega ning mõningaid koodikompileerimise optimeerimisi ei saa täielikult toetada, seega on vaja tasakaalustada sujuvust ja aega
- Kompileerimise ettevalmistamine ja sageli kasutatavate meetodite tuvastamine on ajamahukas ning algne kompileerimine ei saavuta kõrgeimat tulemust
AOT (Apre-of-time kompilaator) kompileeritakse eelnevalt
Arvutiteaduses tähendab varajane kompileerimine (AOT kompilatsioon) tavaliselt kõrgetasemelise programmeerimiskeele kompileerimist (enamasti) madala taseme keelde enne programmi käivitamist, tavaliselt ehituse ajal, et vähendada töökoormust, mis on vaja käitusajal teha.
Enamasti ei ole see sama mis kõrgetasemeliste programmeerimiskeelte (näiteks C või C++) või vahepealsete esituste, nagu Java baitkood või . NET Framework Common Intermediate Language (CIL) kood), mis on kompileeritud natiivseks (süsteemisõltuvaks) käitumisega seotuks. masinkoodi, et tulemuseks olevaid binaare saaks natiivselt käivitada, nagu tavalist natiivset kompilaatorit. Kui seda kasutatakse just selles keskkonnas, nähakse seda sageli just-in-time (JIT) kompileerimise vastandina.
AOT kompileerimine toimub enne, kui programm on kompileeritud või paigaldatud, st see eelkompileerib skripte või baitkoodi masinkoodiks ja käivitab need otse vajadusel. See võib parandada programmi käivituskiirust ja vältida kompileerimisprotsessist tingitud viivitusi.
AOT plussid:
- Kompileerimine enne programmi käivitamist väldib kompileerimise jõudlust ja mälutarbimist käitusajal
- Tippsooritust saab saavutada programmi alguses
- See võib oluliselt kiirendada programmi täitmise efektiivsust
AOT miinused:
- Kompileerimine enne programmi käivitamist pikendab programmi paigaldamise aega
- Eelkompileeritud sisu salvestamine võtab rohkem mälu
- Kõrgetasemeliste keelte järjepidevuse ohverdamine
Kokkuvõte
JIT: Kõrge läbilaskevõime, käitusaegse jõudluse boonus, saab töötada kiiremini ja dünaamiliselt genereerida koodi jne, kuid käivitamine on suhteliselt aeglane ning JIT kihistamise mehhanismi käivitamiseks on vaja teatud aega ja kõnede sagedust AOT: Madal mälukasutus, kiire käivituskiirus võimaldab käivitamisaega staatiliselt siduda lõpliku programmiga ilma käitusajata, kuid käitusajal jõudluse boonust ei ole ning seda ei saa programmi käivituse järgi edasi optimeerida
Viide:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
|
Eelmine:.NET/C# Kõrge jõudlus ühendab mitu faili üheks failiksJärgmine:.NET/C# kogumiloend, HashSet, et määrata, kas elemendil on võrdlus
|