Javaprogramme könnten schneller laufen

Mal wieder fiel sofort auf, als ich einmal mehr strace bemühen mußte um festzustellen,
was genau das von Java aus gestartete Bashscript so treibt.

Dabei weckten wieder diese Zeilen meine Aufmerksamkeit:

[pid  3488] gettimeofday({1371633845, 44988}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 45163}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 45283}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 45401}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 45648}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 45776}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 45917}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46044}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46156}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46286}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46509}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46629}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46746}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46857}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 46967}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 47120}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 47231}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 47343}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 47465}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 47612}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 47750}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 47870}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 48008}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 48121}, NULL) = 0
[pid  3488] gettimeofday({1371633845, 48232}, NULL) = 0

Wie man leicht erkennen kann, finden diese Zugriffe im Milli- bis Microsekundentakt statt.

Wenn man sich das strace log vornimmt, kommt das dabei raus:

[root]# wc --lines  /tmp/log
38896 /tmp/log
[root]# grep -c gettimeofday /tmp/log
25366

Also rund 2/3 aller Logzeilen entfallen nur auf gettimeofday() . Auch wenn der Aufruf an sich nur wenige Takte der CPU benötigen sollte, die Masse der Aufrüfe an sich stellt ein nicht zu verachtendes Problem dar. Vermutlich ist das völlig unnötig. Mal sehen, ob sich Oracle der Meinung anschliesst.

Im Einsatz war Java 6 latest.