Snoop: Millisekunden genaue Zeitmessung?!

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

  1. 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.

  2. Na ich dachte, es gibt vielleicht eine Funktion die ich noch nich keine oder ein Kniff, womit man das hin bekommt..
    Klingt sehr entmutigend! :(

  3. 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

  4. 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