Esistono alcune lingue che supportano un sistema di tipi sufficientemente potente che possono dimostrare in fase di compilazione che il codice non indirizza una matrice al di fuori dei limiti. La mia domanda è che se dovessimo compilare un tale linguaggio per la JVM, c'è un modo in cui potremmo trarne vantaggio per le prestazioni e rimuovere i controlli dei limiti di array che si verificano su ogni accesso di array?Hack the JVM per evitare verifiche e cast inutili
1) So che il recente JDK supporta l'eliminazione di un controllo associato all'array, ma poiché so che al momento della compilazione alcune chiamate sono sicure, posso rimuovere molto più sicuro.
2) Alcuni potrebbero pensare che questo non influisce molto sulle prestazioni, ma lo è sicuramente, soprattutto nelle applicazioni pesanti di array/computazione come il calcolo scientifico.
La stessa domanda per quanto riguarda il casting. So che qualcosa è un certo tipo, ma Java non lo fa perché il suo sistema di tipo limitato. C'è un modo per dire semplicemente alla JVM di "fidarsi di me" e saltare qualche assegno?
Mi rendo conto che probabilmente non c'è modo di farlo poiché la JVM è generalmente distribuita, potrebbe essere ragionevole modificare una JVM con questa funzione? È qualcosa che è stato fatto?
È una delle frustrazioni nella compilazione di un linguaggio più potente nella JVM, ma è ancora ostacolato dai limiti di Java.
Sono d'accordo che delimita i controlli potrebbero richiedere molto tempo. Quanto spesso stai lanciando? (E/o dare qualche dettaglio in più) che sembra improbabile che sia un significativo calo di prestazioni nella maggior parte del codice. – user949300
Non è sicuro, ma è il principio generale: perché ho provato alcune cose sul codice, voglio che le limitazioni del JVM per ottenere fuori del modo dato che sono inutili in questo caso. – mentics
Hai guardato in sun.misc.Unsafe? http://stackoverflow.com/questions/5574241/interesting-uses-of-sun-misc-unsafe È possibile accedere alla memoria direttamente, senza controllo dei limiti, a condizione che l'applicazione ha le impostazioni corrette. Non sarei sorpreso se fornisse direttamente o indirettamente anche alcune funzionalità di tipo casting. – Philip