2017-01-03 13 views

Odpowiedz

62

JIT - Kompilacja maszynopis w sam raz na wykonując to.

  • Skompilowany w przeglądarce.
  • Każdy plik jest kompilowany osobno.
  • Nie trzeba budować po zmianie kodu i przed ponownym załadowaniem strony przeglądarki.
  • Nadaje się do rozwoju lokalnego.

AOT - Kompilacja TypeScript podczas fazy kompilacji.

  • Skompilowany przez samą maszynę za pomocą wiersza poleceń (Szybszy).
  • Cały kod skompilowany razem, wprowadzający HTML/CSS do skryptów.
  • Nie trzeba wdrażać kompilatora (połowa rozmiaru kątowego).
  • Bardziej bezpieczne, oryginalne źródło nie zostało ujawnione.
  • Nadaje się do produkcji produkcyjnych.
+1

Również doświadczyłem bardzo słaba wydajność podczas korzystania z kompilacji Just-in-Time, zwłaszcza na starszych urządzeniach z Androidem. Ponadto luka w renderowaniu przy ładowaniu pierwszej strony jest znacznie większa (na starszych urządzeniach z systemem Android do 10 sekund w zależności od wielkości projektu). –

+0

Dziękuję za to jasne i proste wyjaśnienie. –

+9

Maszynopis nie jest skompilowany w samą porę, przeglądarka nie może tego zrobić. W obu przypadkach maszynopis jest kompilowany podczas procesu kompilacji. – Robouste

10

Beniamin i Nisar wspomniały o kilku dobrych stronach. Dodam do tego.

Chociaż teoretycznie, AOT wygląda atrakcyjniej niż JIT dla celów produkcyjnych, ale miałem wątpliwości, czy AOT naprawdę warto!

Znalazłem nice stats by Jeff Cross i udowodniłem, że AOT znacznie skraca czas ładowania aplikacji. Poniżej przystawki z Jeff krzyż postu daje szybki pojęcia o tym,

enter image description here

3

Jest właściwie tylko jeden kątowy kompilator. Różnica między AOT i JIT jest kwestią czasu i narzędzi. W przypadku AOT kompilator jest uruchamiany raz w czasie kompilacji przy użyciu jednego zestawu bibliotek; z JIT uruchamia się za każdym razem dla każdego użytkownika w środowisku wykonawczym przy użyciu innego zestawu bibliotek.

5

znaleźli dość dobre wyjaśnienie here ..

TLDR;

Zasadniczo kompilujemy kod dwukrotnie z aplikacjami angular2, raz, gdy konwertujemy TS na JS, a następnie gdy przeglądarka konwertuje JS na binarny.

Chociaż nie możemy kontrolować tego drugiego, możemy jednak kontrolować, kiedy wykonywana jest kompilacja z TS do JS.

W przypadku metody angle2, jeśli używasz JIT (domyślnie), obie kompilacje występują po wczytaniu kodu do przeglądarki (tzn. TS -> JS -> binarny).Nie tylko jest to dodatkowe obciążenie związane z kompilacją TS -> JS w przeglądarce, ale także kompilator angular2 jest prawie o połowę mniejszy od pakietu angular2, więc jeśli tego unikniemy, możemy zmniejszyć rozmiar pliku ładunek znacząco.

AOT precomplies TS kod JS, co skraca czas kompilacji, jak również wielkości kodu, likwidując potrzebę kątowego kompilatora co stanowi 50% kodu