43
Witam wszytkich szanownych użytkowników - od jakiegoś zachodzę w głowę jak to możliwe, że java jest szybsza od assemblera - brzmi irracjonalnie, ale już tłumaczę o co chodzi. Pytanie do wyjadaczy programowania

Zaimplementowałem sortowanie bąbelowe w javie i assemblerze (linux) na tablicy 10000 elementów posortowanych malejący (wariant najgorszy dla bubble sorta) i zmierzyłem czas w jakim tablica będzie posortowana w javie i assemblerze - sam proces sortowania.
dlaczego java jest szybsza od assemblera?
Kod źródłowy assembler:  https://raw.githubusercontent.com/HatimHibrahim/bubblesort_speedtest/refs/heads/main/asm/main.asm
Kod źródłowy java: https://raw.githubusercontent.com/HatimHibrahim/bubblesort_speedtest/refs/heads/main/java/main.java

kompilacja i uruchomienie:
- assembler (x86_64, linux)
    > fasm main.asm main
    > ./main
- java:
   > javac main.java
   > java main

Szukałem w internecie - co może być przyczyną, pytałem AI - ale odpowiedź nie jest dla mnie zadowalająca - kompilator javy stosuje optymalizacje kodu.
Sprawdziłem to - zdekompilowałem plik main.class - było ok - mniej-więcej jak w kodzie źródłowym, żadnych optimalizacji w stylu posortowania tablicy i wypisania wyniku.

Czy są jakieś rozsądne wyjaśnienia tego? 
Obrazek zwinięty kliknij aby rozwinąć ▼
0.07383394241333