On Fri, 29 Mar 2002 09:52:35 +0100, "Anne Hauberg"
<hauberg@get2net.dk> wrote:
>Hej...
>
>Er det på nogen måde muligt at opnå mikrosekund nøjagtighed i Java, nå man
>tager tiden? Hvis ja, hvordan
>
>Synes ikke System.currentTimeMillis(); er nøjagtig nok, ligesom StopWatch.
>Findes der noget mere nøjagtigt, som også opererer i ms., hvis mikrosekunder
>er et lukket land?
Problemet er givet vis at det skal det igennem en virtuel maskine
og tidsaflæsninger af den størrelsesorden vil være "old news" når
de når frem til din Java kode, og du vil ikke kunne bruge dem til
noget.
Det eneste i Java der arbejder med mindre tidsenheder er
wait-metoden, hvor man kan angive helt ned til nano-sekunder,
men om Java reelt kan det, ved jeg ikke. I givet fald kan
det kun lade sig gøre fordi den virtuelle maskine overtager
håndteringen af den korte tidsangivelse, og den ikke skal
sendes frem og tilbage mellem native kode og byte code.
Når man anvender så korte tidsintervaller er det ofte i
forbindelse med maskinær kode, og hvis dit program generelt
har karakter af at være maskinært er Java nok ikke det
rette sprog at vælge, så er C/C++ mere oplagt, eller
assembler hvis du virkelig skal ned og pille i små
tidsenheder.
Hvis du gerne vil holde dig til Java, og det kun er en
meget begrænset del af dit program der er maskinært, kan
du implementere denne del i f.eks. C/C++ og bruge JNI.
Skal du arbejde med meget små tidsenheder (jeg ved ikke
hvor små) bør du nok vælge en delegeret løsning hvor
C/C++ koden selv gør det der skal gøres i forbindelse
med de korte tidsintervaller, da du ellers er tilbage
i "old news" problemet.
/Flemming Jensen