[Java] Reactiesnelheid in milliseconden

Pagina: 1
Acties:

  • Lewis
  • Registratie: Juli 2002
  • Laatst online: 08-06-2023
Ik wil via een JAVA-applet reactiesnelheden meten op de miliseconde nauwkeurig. Ik neem daarvoor het verschil tussen twee tijdstippen met System.currentTimeMillis(). Dat werkt opzich wel, maar het is verre van nauwkeurig. Hij lijkt minimaal af te ronden op hondersten van seconden, want het laatste getal is altijd een 0. In zoekmachines vind ik steeds dezelfde currentTimeMillis functie terug, toch werkt dat niet naar behoren. Is het mogelijk om het anders te doen zodat hij wel een juiste weergave geeft van miliseconden?

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Ligt dat misschien aan de gebruikte VM?
Want bij mij gaat het wel goed:

Java:
1
2
3
4
5
public class Tijd {
  public static void main(String args[]){
    System.out.println(System.currentTimeMillis());
  }
} 


en als ik dat met mijn linux bak 3x uitvoer krijg ik: (java version "1.4.2_03")
1089315656297
1089315658514
1089315659547

en hetzelfde met mijn windows doos: (ook: java version "1.4.2_03")

1089315706109
1089315706375
1089315706593

Dus niks afronding bij mij :)

  • Pinobigbird
  • Registratie: Januari 2002
  • Laatst online: 23:40

Pinobigbird

doesn't share food!

Even zelf getest:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class ReactieTijd extends Applet implements ActionListener {

    private long time1 = 0;

    public void init() {
        Button button = new Button( "Klik" );
        button.addActionListener(this);
        add( button );
    }

    public void actionPerformed(ActionEvent event) {
        long time2 = System.currentTimeMillis();
        if (time1 != 0 ) showStatus( "Time: " + ( time2 - time1 ) );
        time1 = time2;
    }
}


Als ik deze applet laad in een webpagina en open in Internet Explorer of Firefox, komt er inderdaad altijd een "afronding" voor, eindigend op 0 of 1, maar nooit iets anders!

Wanneer ik dit progje run in een appletviewer, krijg ik wel goede waarden.

[ Voor 3% gewijzigd door Pinobigbird op 08-07-2004 22:19 ]

Joey: Nice try. See the Netherlands is this make believe place where Peter Pan and Tinkerbell come from.
https://kattenoppasleiderdorp.nl
PV: 3080Wp ZO + 3465Wp NW = 6545Wp totaal 13°tilt


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

hmm had er even overheen gelezen dat het een applet was :X

maar het zou dus goed kunnen zijn dat de browser minder tijd beschikbaar stelt aan de VM, waardoor dit soort "afrondingen" plaats kunnen vinden :)

  • Lewis
  • Registratie: Juli 2002
  • Laatst online: 08-06-2023
Vrij bizar. Ik krijg zowel in Internet Explorer als in een Appletviewer nooit een ander getal als laatste dan een 0. Het zou inderdaad aan de VM kunnen liggen, maar ik probeerde net een waarde uit Javascript te krijgen en die geeft ook alleen de miliseconden weer met als laatste getal een 0. Op een andere PC werkt het weer wel. Wellicht ligt het dan aan bepaalde computersystemen zelf? Ik vond op het internet echter een implementatie van reactietijdmetingen in Flash: http://kylan.newgrabs.com/reaction.swf

Die geeft wel gewoon alle getallen weer. Dat doet vermoeden dat ze een andere functie gebruiken. Timers in Java zijn er ook, maar die geven een signaal na een aantal miliseconden. Dat is net niet de bedoeling. Ik ben niet echt blij met de manier om een tijd te krijgen. Zoveel mogelijkheden als er zijn tegenwoordig en dan is er niet 1 simpele implementatie van een milisecondenteller. ;)

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Zie dit artikel over de Java timer:
http://www.javaworld.com/...01/01-qa-0110-timing.html

"Beauty is the ultimate defence against complexity." David Gelernter

Pagina: 1