Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 8
  • 41

Witam.

Czy są takie dane mówiące o wydajności (w pewnym przybliżeniem) kodu wykonywanego na VM vs kodu wykonywanego w środowisku .Net (tworzonego np. w C#). Zakładając oczywiście, że zastosowane konstrukcje są tożsame?

 

 

Rafał_Kędzierski
  • Zapytał
  • @ Rafał_Kędzierski | 12.07.2015
    • lider
    • laureat
    • 39
    • 6
    • 46

Odpowiedź (1)

  • 6

Swojego czasu szukałem odpowiedzi na to pytanie i znalazłem bardzo sprzeczne opinie. W zasadzie każdy test spotykał się z ostrą falą krytyki i ciężko było wyciągnąć jednoznaczny wniosek, w tę czy inną stronę.

Ale spróbujmy podsumować rozwiązania techniczne obu wariantów:

 

C#/.NET:

- kod źródłowy kompilowany jest do poziomu Common Intermediate Language (CIL), a podczas pierwszego uruchomienia zamieniany jest na kod natywny poprzez kompilator JIT

- powyższe sugeruje że aplikacja .NET będzie startować dłużej, ale po pierwszym wykonaniu kodu będzie wykonywać się szybciej

 

Java:

- kod bajtowy Javy wykonywany jest w maszynie wirtualnej, przez co nie jest tracony czas na kompilację czasu wykonania

- na przykładzie maszyny wirtualnej Hotspot - istnieje kilka poziomów optymalizacji, które włączają się w zależności od ilości wywołań danej sekcji kodu

- optymalizacja następuje w czasie rzeczywistym i potrafi zamienić często wykonywany fragment kodu na kod natywny

- optymalizator potrafi zrobić także czynność odwrotną - jeśli fragment stanie się mniej "popularny", wówczas może zostać przepisany z powrotem na formę kodu bajtowego, co sprzyja elastyczności

 

 

Zachęcam specjalistów do uzupełnienia i/lub skorygowania mojego postu w celu powstania listy plusów i minusów danej technologii, obiecuję również uzupełniać temat w miarę odszukiwania nowych informacji.

Maciej_Krauze
  • Odpowiedział
  • @ Maciej_Krauze | 12.08.2015
    • lider
    • laureat
    • 45
    • 16
    • 58