Próbuję uzasadnić, w jaki sposób JIT powodów Hotspot. Najbardziej interesuje mnie najnowszy etap kompilacji (kompilator C2). Czy JIT w Javie opiera się na twierdzeniach dotyczących optymalizacji? Gdyby tak było, mógłbym sobie wyobrazić, że istnieją przykłady, w których kod mógłby działać szybciej z włączonymi asercjami.Java, Assertions i JIT
Na przykład w kawałku kodu:
static int getSumOfFirstThree(int[] array) {
assert(array.length >= 3);
return array[0] + array[1] + array[2];
}
- Czy JIT, gdy włączone są twierdzenia, być na tyle mądry, aby wyeliminować kontrole granic na dostęp do tablicy?
- Czy istnieją inne przypadki, o których można pomyśleć (praktyczne lub nie), w których stwierdzenia rzeczywiście poprawią natywny kod, który JIT będzie kompilować?