|
|
Opublikowano 15.02.2024 17:17:46
|
|
|
|

Terminologia
CLI: Common Language Infrastructure to specyfikacja w ramach frameworka .NET, która definiuje środowisko wykonawcze niezależne od języka i obejmujące różne architektury. Dzięki temu możemy rozwijać oprogramowanie w różnych językach wysokiego poziomu według specyfikacji, które może działać w różnych architekturach komputerowych bez żadnych modyfikacji
CLR: Środowisko uruchomienia w języku wspólnym. jest specyfikacją zapewniającą, że środowisko operacyjne jest niezależne od języka i międzyarchitektoniczne
CTS: Wspólny System Typów
CLS: Specyfikacja języka wspólnego
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler kompiluje kod źródłowy zaawansowanych języków do języków pośrednich.
JIT: Just In Time Compiler kompiluje język pośredni do kodu maszynowego, który komputer rozumie, a następnie może być wykonywany
Kod źródłowy jest kompilowany do IL za pomocą kompilatora C# (np. programy, pliki dll, exe itp.). CLR ładuje te IL, kompiluje je do kodu maszynowego za pomocą JIT i jest ostatecznie wykonywany, jak pokazano na poniższym rysunku:
JIT (kompilator just-in-time) jest kompilowany w czasie
Kompilator just-in-time (JIT) jest częścią Common Language Runtime (CLR) w .NET i odpowiada za zarządzanie . .NET program, niezależnie od dowolnych . .NET programowania. Kompilatory specyficzne dla języka konwertują kod źródłowy na języki pośrednie. Ten pośredni język jest następnie konwertowany na kod maszynowy przez kompilator just-in-time (JIT). Ten kod maszynowy jest specyficzny dla środowiska komputerowego, w którym działa kompilator JIT. Praca nad kompilatorem JIT: Kompilatory JIT muszą przyspieszyć wykonywanie kodu i zapewnić wsparcie dla wielu platform. Oto jak to działa:
Kompilator JIT konwertuje Microsoft Intermediate Language (MSIL) lub Common Intermediate Language (CIL) na kod maszynowy. Robi się to przed wykonaniem MSIL lub CIL. MSIL jest konwertowany na kod maszynowy w razie potrzeby, tzn. kompilator JIT kompiluje MSIL lub CIL w razie potrzeby, zamiast kompilować cały kod. Przechowuj skompilowany MSIL lub CIL, aby mógł być użyty do kolejnych wywołań w razie potrzeby.
Zalety JIT:
- Może być kompilowany i generowany w czasie rzeczywistym zgodnie z aktualną sytuacją sprzętową
- Optymalna sekwencja instrukcji maszynowych może być generowana zgodnie z aktualną operacją programu
- Gdy program musi wspierać dynamiczne linkowanie, może używać wyłącznie metody kompilacji JIT
- Kod można dostosować do rzeczywistej sytuacji pamięci w trakcie procesu, aby lepiej ją wykorzystać
Wady JIT:
- Kompilacja wymaga zasobów środowiska wykonawczego, co powoduje zacinanie się procesu podczas wykonywania
- Kompilacja zajmuje czas działania, a niektóre optymalizacje kompilacji kodu nie mogą być w pełni wspierane, dlatego konieczne jest zrównoważenie płynności i czasu
- Przygotowanie kompilacji i identyfikacja często stosowanych metod jest czasochłonna, a początkowa kompilacja nie osiąga najwyższej wydajności
AOT (Ahead-of-time compiler) jest kompilowany z wyprzedzeniem
W informatyce wczesna kompilacja (kompilacja AOT) to proces kompilacji (zazwyczaj) języka programowania wysokiego poziomu do (zazwyczaj) języka niskopoziomowego przed uruchomieniem programu, zwykle w czasie budowania, aby zmniejszyć ilość pracy wymaganej w czasie działania.
Najczęściej nie jest to to samo, co łączenie języków programowania wysokiego poziomu (takich jak C czy C++) lub reprezentacji pośrednich, takich jak bajtcode Java lub . Kod NET Framework Common Intermediate Language (CIL) skompilowany tak, aby był natywny (zależny od systemu) związany z zachowaniem. kod maszynowy, dzięki któremu powstałe binarki mogą być wykonywane natywnie, podobnie jak standardowy natywny kompilator. W tym konkretnym środowisku często postrzega się go jako przeciwieństwo kompilacji just-in-time (JIT).
Kompilacja AOT odbywa się przed kompilacją lub instalacją programu, czyli wstępnie kompiluje skrypty lub bajtkody do kodu maszynowego i wykonuje je bezpośrednio, gdy jest to potrzebne. Może to poprawić szybkość uruchamiania programu i uniknąć opóźnień spowodowanych procesem kompilacji.
Zalety AOT:
- Kompilacja przed uruchomieniem programu unika wydajności kompilacji i zużycia pamięci w czasie działania
- Szczytowe wyniki można osiągnąć już na początku programu
- Może znacząco przyspieszyć efektywność wykonywania programów
Wady AOT:
- Kompilacja przed uruchomieniem programu zwiększa czas instalacji programu
- Zapisywanie wstępnie skompilowanej zawartości zajmuje więcej pamięci
- Poświęcanie spójności języków wysokiego poziomu
streszczenie
JIT: Wysoka przepustowość, bonus do wydajności w czasie działania, może działać szybciej i dynamicznie generować kod itd., ale uruchamia się stosunkowo wolno i wymaga określonego czasu oraz częstotliwości wywołań, aby uruchomić mechanizm warstwowania JIT AOT: Niskie zużycie pamięci, szybka prędkość uruchamiania, możliwość statycznego powiązania runtime z końcowym programem bez czasu działania, ale nie ma bonusu do wydajności w czasie wykonywania i nie można go dodatkowo optymalizować zgodnie z biegiem programu
Odniesienie:
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
|
Poprzedni:.NET/C# Wysoka wydajność łączy wiele plików w jeden plikNastępny:.NET/C# Collection List, HashSet do określenia, czy dany element ma benchmark
|