staticvoid m(int[] a, int[] b, int j) { // Array bound check elimination inserts a predicate before // the loop. We'll have the predicate fail, so the method is // recompiled without optimistic optimizations for (int i = 0; i < 10; i++) {
a[i] = i;
}
// The test itself
a[j] = 0;
a[j+5] = 0;
b[j+4] = 0; // this range check shouldn't be eliminated
}
staticpublicvoid main(String[] args) { int[] arr1 = newint[10], arr2 = newint[10]; // force compilation: for (int i = 0; i < 5000; i++) {
m(arr1, arr2, 0);
}
// force compilation again (no optimistic opts): for (int i = 0; i < 5000; i++) {
m(arr1, arr2, 0);
}
// Check that the range check on the second array wasn't optimized out boolean success = false; try {
m(arr1, newint[1], 0);
} catch(ArrayIndexOutOfBoundsException e) {
success = true;
} if (success) {
System.out.println("TEST PASSED");
} else { thrownew RuntimeException("TEST FAILED: erroneous bound check elimination");
}
}
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.10Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-06-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.