Millisekunden genaue Zeitmessung?!

- java
0 Anonymous0 Snoop
0 Christoph Zurnieden0 Slyh
Hossa,
ich hab ein kleines Tool geschrieben, was die Reaktionszeit des Users registieren soll. Ich hab aber das Gefühl, dass wenn ich mit "System.currentTimeMillis();" die Zeit ermittel , das sehr ungenau ist.
Denn wenn ich vor und nach dem "reagieren" die Zeit messe und mir die Differenz errechne, dann sind die Werte immer 10, 20, 30 usw., aber nie 33 oder 47. Versetht ihr mein Problem. Der bringt mir also keine 1000stel Sekunden sonder nur 100stel. Und das ist mir zu ungenau.
Hat jemand ne Idee wie ich das ändern oder vielleicht auch ganz anders machen könnte?
Dank euch, Snoop
Hat jemand ne Idee wie ich das ändern oder vielleicht auch ganz anders machen könnte?
Wenn du keine Spezial-Hardware hast: gar nicht. Der Timer in herkömmlichen PCs ist nicht genau genug.
Na ich dachte, es gibt vielleicht eine Funktion die ich noch nich keine oder ein Kniff, womit man das hin bekommt..
Klingt sehr entmutigend! :(
Hi,
ich hab ein kleines Tool geschrieben, was die Reaktionszeit des Users registieren soll. Ich hab aber das Gefühl, dass wenn ich mit "System.currentTimeMillis();" die Zeit ermittel , das sehr ungenau ist.
Das ist eigentlich sehr genau.
Versetht ihr mein Problem. Der bringt mir also keine 1000stel Sekunden sonder nur 100stel.
Um genaue Zeit messen zu können brauchst Du einen Definition von "genau" und eine Möglichkeit die zu implementieren. Es gibt ein Realtime-Java, aber da kennt sich Google bestimmt besser aus, als ich ;-)
Und das ist mir zu ungenau.
Für eine menschliche Reaktionszeit, die man normalerweise in ganzen Sekunden bemißt? ;-)
Aber Scherz beiseite: wie, ober besser gefragt womit mißt Du die eigentlich?
Hat jemand ne Idee wie ich das ändern oder vielleicht auch ganz anders machen könnte?
Du könntest z.B. mal in http://www-106.ibm.com/developerworks/library/i-seconds/ reinschnuppern. Ob Du die Lib gebrauchen kannst weiß ich nicht (so ein Dingen nur für's Messen dürfte wohl etwas übertrieben sein) aber der Artikel erklärt ganz gut die Schwierigkeiten.
so short
Christoph Zurnieden
Hallo,
das Problem, das zu beschreibst, ist recht bekannt. Du hättest über
Google, evtl. sogar über eine Foren-Suche hier im Forum sicherlich
weitreichende Informationen erhalten.
Im Grunde wurde ja schon fast alles in diesem Thread gesagt. Wobei das
Problem wohl nicht wirklich am System-Timer liegt. (Mit System-Timer
meine ich die PC-Hardware.) Der ist nämlich weit präziser als das, was
Java liefert. Es liegt wohl zu einem gewissen Teil am Betriebssystem.
Java liefert auf verschiedenen Betriebsyystem verschieden genaue
Millisekunden unter Verwendung besagter Methode...
Wie die genauen Zusammenhänge sind, läßt sich sicher ergoogeln.
Eigentlich wollte ich dich auch nur darauf hinweisen, daß ab JDK1.5
auch Java die Möglichkeit bietet, sehr viel genauer kleine
Zeitintervalle zu erfassen. Die Methode heißt System.nanoTime().
Diese liefert theoretisch Zeitintervalle im Nanosekunden-Bereich.
Aber auch hier variiert die Präzision von Betriebssystem zu Betriebs-
system. Du solltest es einfach mal testen...
Gruß
Slyh