Czy istnieje powód, aby sądzić, że operatory przesunięcia bitowego w języku Java (podpisane) i >>> (bez podpisu) działają inaczej? Nie mogę wykryć żadnej różnicy na mojej maszynie.Czy kiedykolwiek występowała jakakolwiek inna wydajność pomiędzy Java >> i >>> operatory przesunięcia w prawo?
To jest czysto akademickie pytanie; nigdy nie będę wąskim gardłem, na pewno. Wiem: najlepiej napisać, co masz na myśli; użyj >> dla dzielenia przez 2, na przykład.
Zakładam, że sprowadza się do tego, które architektury mają, które operacje zostały wykonane jako instrukcja.
Myślę, że oba zostaną przekonwertowane na natywne instrukcje procesora (logiczne/arytmetyczne, przesunięcie w prawo), które ostatecznie mają podobne cykle. – kennytm
Nie, używaj '/ 2' do dzielenia przez 2. –
+1, aby umożliwić mi sprawdzenie operatora >>>. I nie lekceważ optymalizacji, którą robi kompilator. Często optymalizacja na tym poziomie może nawet pogorszyć sytuację. – Thirler