import java.util.ArrayList;
class Ideone {
public static final int LIST_SIZE = 1000;
public static final ArrayList<Integer> list = new ArrayList<>(LIST_SIZE);
static {
for (int i = LIST_SIZE; i > 0; --i) {
list.add(content);
}
}
static int doArrayIterator() {
int result = 0;
result += i;
}
return result;
}
static int doArrayIndex() {
int result = 0;
for (int i = 0; i < LIST_SIZE; ++i) {
result += list.get(i);
}
return result;
}
final int RUNS = 100000;
int sum = 0;
for (int i = 0; i < RUNS; ++i) {
sum += doArrayIterator();
sum += doArrayIndex();
}
System.
out.
println("Warmup done: " + sum
);
sum = 0;
long timeStart
= System.
nanoTime(); for (int i = 0; i < RUNS; ++i) {
sum += doArrayIterator();
}
final long timeIterator
= System.
nanoTime() - timeStart
;
sum = 0;
timeStart
= System.
nanoTime(); for (int i = 0; i < RUNS; ++i) {
sum += doArrayIterator();
}
final long timeIndex
= System.
nanoTime() - timeStart
;
final double timePIterator
= ((double) timeIterator
) / ((double) Math.
max(timeIterator, timeIndex
)) * 100.0; final double timePIndex
= ((double) timeIndex
) / ((double) Math.
max(timeIterator, timeIndex
)) * 100.0; System.
out.
println(String.
format("%-10s %d %10d ns %6.2f%%",
"Iterator:", sum, timeIterator, timePIterator
)); System.
out.
println(String.
format("%-10s %d %10d ns %6.2f%%",
"Index:", sum, timeIndex, timePIndex
)); }
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CgpjbGFzcyBJZGVvbmUgewoKICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMSVNUX1NJWkUgPSAxMDAwOwogIHB1YmxpYyBzdGF0aWMgZmluYWwgQXJyYXlMaXN0PEludGVnZXI+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oTElTVF9TSVpFKTsKCiAgc3RhdGljIHsKICAgIGZpbmFsIEludGVnZXIgY29udGVudCA9IEludGVnZXIudmFsdWVPZigxKTsKICAgIGZvciAoaW50IGkgPSBMSVNUX1NJWkU7IGkgPiAwOyAtLWkpIHsKICAgICAgbGlzdC5hZGQoY29udGVudCk7CiAgICB9CiAgfQoKICBzdGF0aWMgaW50IGRvQXJyYXlJdGVyYXRvcigpIHsKICAgIGludCByZXN1bHQgPSAwOwogICAgZm9yIChmaW5hbCBJbnRlZ2VyIGkgOiBsaXN0KSB7CiAgICAgIHJlc3VsdCArPSBpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIHN0YXRpYyBpbnQgZG9BcnJheUluZGV4KCkgewogICAgaW50IHJlc3VsdCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IExJU1RfU0laRTsgKytpKSB7CiAgICAgIHJlc3VsdCArPSBsaXN0LmdldChpKTsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24gewogICAgZmluYWwgaW50IFJVTlMgPSAxMDAwMDA7CgogICAgaW50IHN1bSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IFJVTlM7ICsraSkgewogICAgICBzdW0gKz0gZG9BcnJheUl0ZXJhdG9yKCk7CiAgICAgIHN1bSArPSBkb0FycmF5SW5kZXgoKTsKICAgIH0KICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV2FybXVwIGRvbmU6ICIgKyBzdW0pOwoKICAgIHN1bSA9IDA7CiAgICBsb25nIHRpbWVTdGFydCA9IFN5c3RlbS5uYW5vVGltZSgpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBSVU5TOyArK2kpIHsKICAgICAgc3VtICs9IGRvQXJyYXlJdGVyYXRvcigpOwogICAgfQogICAgZmluYWwgbG9uZyB0aW1lSXRlcmF0b3IgPSBTeXN0ZW0ubmFub1RpbWUoKSAtIHRpbWVTdGFydDsKCiAgICBzdW0gPSAwOwogICAgdGltZVN0YXJ0ID0gU3lzdGVtLm5hbm9UaW1lKCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IFJVTlM7ICsraSkgewogICAgICBzdW0gKz0gZG9BcnJheUl0ZXJhdG9yKCk7CiAgICB9CiAgICBmaW5hbCBsb25nIHRpbWVJbmRleCA9IFN5c3RlbS5uYW5vVGltZSgpIC0gdGltZVN0YXJ0OwoKICAgIGZpbmFsIGRvdWJsZSB0aW1lUEl0ZXJhdG9yID0gKChkb3VibGUpIHRpbWVJdGVyYXRvcikgLyAoKGRvdWJsZSkgTWF0aC5tYXgodGltZUl0ZXJhdG9yLCB0aW1lSW5kZXgpKSAqIDEwMC4wOwogICAgZmluYWwgZG91YmxlIHRpbWVQSW5kZXggPSAoKGRvdWJsZSkgdGltZUluZGV4KSAvICgoZG91YmxlKSBNYXRoLm1heCh0aW1lSXRlcmF0b3IsIHRpbWVJbmRleCkpICogMTAwLjA7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oU3RyaW5nLmZvcm1hdCgiJS0xMHMgJWQgJTEwZCBucyAlNi4yZiUlIiwgIkl0ZXJhdG9yOiIsIHN1bSwgdGltZUl0ZXJhdG9yLCB0aW1lUEl0ZXJhdG9yKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oU3RyaW5nLmZvcm1hdCgiJS0xMHMgJWQgJTEwZCBucyAlNi4yZiUlIiwgIkluZGV4OiIsIHN1bSwgdGltZUluZGV4LCB0aW1lUEluZGV4KSk7CiAgfQp9Cg==