Por que System.nanoTime () é mais lento (em desempenho) que System.currentTimeMillis ()?

Hoje eu fiz um pouco de Benchmark rápido para testar o desempenho de velocidade deSystem.nanoTime() eSystem.currentTimeMillis():

long startTime = System.nanoTime();

for(int i = 0; i < 1000000; i++) {
  long test = System.nanoTime();
}

long endTime = System.nanoTime();

System.out.println("Total time: "+(endTime-startTime));

Estes são os resultados:

System.currentTimeMillis(): average of 12.7836022 / function call
System.nanoTime():          average of 34.6395674 / function call

Por que as diferenças na velocidade de corrida são tão grandes?

Sistema de referência:

Java 1.7.0_25
Windows 8 64-bit
CPU: AMD FX-6100

questionAnswers(5)

yourAnswerToTheQuestion