Starší komentáře ke článku: Architektura .NET frameworku

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Slavomir Furman

Datum vložení: 8.3.2002 9:00:25

Zdravim!

Len by som chcel podotknut, ze by bolo potrebne upresnit dve veci ohladom popisu JIT kompilacie.

Prva, v aktualnej verzii .NET Frameworku 1.0 pre platformu win32 na Intel procesoroch, existuje len jeden JIT compiler, a teda neexistuje napr. Econo-JIT.
Tento concept Microsoft uvadzal v starsich dokumentoch (mozno az do Beta2), no v dokumentacii finalnej verzie o tom napr. niet ani zmienky.

Samorejne je tu (ako cast .NET Frameworku)nastroj "ngen.exe", ktory robi pre-JITing. Teda prelozi .NET executable a ulozi vysledok prekladu do native image cache na danom stroji, a ak sa pokusime spusit dany .NET program, potom execution engine skontroluje, ci je v cache prelozeny kod zodpovedajuci aktulanej verzii .NET vykonavatelneho programu, ak je, tak sa priamo zacne jeho vykonavanie, ak nie robi sa JITing beznym sposobom. To teda neznaci, ze ked by sme dany .NET executable preniesli na iny stroj, kde by boli platne instalovane vsetky kniznice, ktore potrebuje, ze by nebezal.

Druha poznamka (prakticky z toho plynuca) pri standardnej JIT kompilacii (bez pouzitia nastroja "ngen.exe") sa vzdy kompiluju jednotlive casti podla potreby, teda aktualne vtedy ked je potrebne ich pouzit. Teda ked class loader natiahne dany class do pamati nahradia sa volania jeho procedur stubmi, a pri prvom volani, pouziti, metody sa metoda kompiluje do nativneho kodu, vysledok tohoto ciastkoveho prekladu sa ulozi do cache, a stub sa nahradi adresou entry pointu prelozeneho kodu metody.

Inak dana vec sa da vidiet, ak si pozriete pomocou nejakeho nativneho debuggera ako vyzera vykonavanie kodu .NET programu na urovni x86 assembleru.

Samozrejme to je dost narychlo a strucne popisane, mozu sa robit este i optimalizacie, atd.

vdaka,
Slavo.

Avatar

Autor komentáře: Michal Naiman

Datum vložení: 11.3.2002 10:18:31

Dobrý den, prohledával jsem MSDN, abych našel aktuální informace a i když se přiznávám, že při psaní článku jsem měl ještě stále instalovanou RC0 .NET frameworku-to je zjevné i z obrázku kompilace, kde je napsaná i verze frameworku, nyní je v MSDN informace nejen o JITtingu při instalaci (Install time), ale i o JITtingu spouštění, kde byl pravděbodobně ve finální verzi .NETu spojen Skutečný JITter a Econo JITter dohromady.
Samozrejme o nástroji "ngen.exe" vím, ale o tom jsem se nezminoval, protože nespadá do kategorie JIT, ale spíše s nadsázkou řečeno "pre-compileru".
Děkuji však za upřesnění článku co se do spojení Skutečného a Econo JITteru týče.

Zpět na článek | Úvodní stránka Interval.cz