Istnieje kilka języków, które obsługują wystarczająco wydajny system typów, które mogą udowodnić podczas kompilacji, że kod nie adresuje tablicy poza jej granicami. Moje pytanie brzmi, czy gdybyśmy mieli skompilować taki język do JVM, czy jest jakiś sposób, abyśmy mogli skorzystać z tego dla wydajności i usunąć kontrole granic tablicy, które występują przy każdym dostępie do tablicy?Zhakuj maszynę JVM, aby uniknąć niepotrzebnych sprawdzeń i rzutowania na granice.
1) Wiem, że ostatnie JDK obsługuje pewną eliminację czeków związanych z tablicą, ale ponieważ wiem, że podczas kompilacji niektóre połączenia są bezpieczne, mogę bezpiecznie usunąć więcej.
2) Niektórzy mogą sądzić, że nie ma to wpływu na wydajność, ale z całą pewnością ma na to wpływ, szczególnie w ciężkich zastosowaniach macierzowych/obliczeniowych, takich jak obliczenia naukowe.
To samo pytanie dotyczące odlewania. Wiem, że coś jest pewnego rodzaju, ale Java nie robi tego z powodu swojego ograniczonego systemu typów. Czy jest jakiś sposób, aby po prostu powiedzieć JVM, aby "zaufaj mi" i pomiń wszelkie kontrole?
Zdaję sobie sprawę, że prawdopodobnie nie ma sposobu, aby to zrobić, ponieważ JVM jest ogólnie rozpowszechniany, czy rozsądnie byłoby zmodyfikować maszynę JVM za pomocą tej funkcji? Czy to jest coś, co zostało zrobione?
Jest to jedna z frustracji w kompilacji JVM do języka JVM, który wciąż jest ograniczony przez ograniczenia Javy.
Zgadzam się, że kontrole graniczne mogą być czasochłonne. Jak często rzucasz? (i/lub podać więcej szczegółów) Wydaje się mało prawdopodobne, aby był znaczącym osiągnięciem wydajności w większości kodów. – user949300
Nie jestem pewien, ale to jest ogólna zasada: ponieważ dowiedziałem się pewnych rzeczy na temat kodu, chcę, aby ograniczenia maszyny JVM ustąpiły, ponieważ są w tym przypadku niepotrzebne. – mentics
Zajrzałeś do sun.misc.Unsafe? http://stackoverflow.com/questions/5574241/interesting-uses-of-sun-misc-unsafe Możesz uzyskać dostęp do pamięci bezpośrednio, bez sprawdzania granic, pod warunkiem, że aplikacja ma poprawne ustawienia. Nie zdziwiłbym się, gdyby w sposób bezpośredni lub pośredni dostarczył również niektóre funkcje odlewania. – Philip