A eseguire un semplice test JDK 1.7.0_45 (Windows 7, 64 bit):
Test 1:
long start = System.nanoTime();
for (int i=0; i < 1000000; i++) {
System.currentTimeMillis();
}
elapsed = System.nanoTime() - start;
Versus Test 2:
long start = System.nanoTime();
long adjust = 313231;
for (int i=0; i < 1000000; i++) {
long result = System.currentTimeMillis() + adjust;
}
elapsed = System.nanoTime() - start;
Sul mio sistema, il primo test era di circa 28 nano / chiamata. Il secondo a circa 1250 nano / chiamata. Questo è un enorme overhead 44x. Qualcuno può spiegare una differenza così grande?