Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
int bucketIndex = hashCode % array.length;
int bucketIndex = hashCode1 & (array.length - 1);
// 1
int summarize(int[] values);
// 2
int summarize(List<Integer> values);
int summarize(List<Integer> values) {
Integer[] a = values.toArray(new Integer[values.size()]);
return summarize(a);
}
int summarize(Integer[] values) {
int[] a = new int[values.length];
for (int i = 0; i < values.length; i++) {
a[i] = values[i];
}
return summarize(a);
}
int summarize(int[] values) {
// Тут ваш суперскоростной код
}
byte[], которым в приложениях зачастую можно обойтись.java -server -XX:+AggressiveOpts -Xms2048m -Xmx2048m \
-XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal | grep -i autobox
intx AutoBoxCacheMax = 20000 {C2 product}
bool EliminateAutoBox = true {C2 diagnostic}
$ java -server -XX:+AggressiveOpts -XX:AutoBoxCacheMax=128 \
-Xms2048m -Xmx2048m -jar target/microbenchmarks.jar ".*Trove.*" \
-i 3 -r 5s -prof gc
Benchmark Mode Thr Cnt Sec Mean Mean error Units IntListJdkInsert thrpt 1 3 5 176214.283 738.319 ops/sec IntListJdkTraverse thrpt 1 3 5 1327901.517 1426.723 ops/sec IntListTroveInsert thrpt 1 3 5 306144.428 2381.945 ops/sec IntListTroveTraverse thrpt 1 3 5 3628098.089 4848.035 ops/sec
java -server -XX:+AggressiveOpts -XX:AutoBoxCacheMax=128 \
-Xms2048m -Xmx2048m -XX:+UnlockDiagnosticVMOptions \
-XX:+PrintFlagsFinal | grep -i autobox
intx AutoBoxCacheMax := 128 {C2 product}
Benchmark Mode Thr Cnt Sec Mean Mean error Units IntListJdkTraverse thrpt 1 3 5 774.100 71.809 ops/sec IntListTroveTraverse thrpt 1 3 5 3548.806 7.712 ops/sec
for(long l = 0; l < INSERT_COUNT; ++l) {
rvalue += jdkMap.get(l);
}
for(long l = 0; l < INSERT_COUNT; l += 4) {
rvalue += jdkMap.get(l);
rvalue += jdkMap.get(l + 1);
rvalue += jdkMap.get(l + 2);
rvalue += jdkMap.get(l + 3);
}
Библиотека Trove. Коллекции примитивных типов в Java