Zeit Optimierung - bzw. ms Optimierung

F

Funkeyfreak

Aktives Mitglied
Geht eig um ein Uni Projekt welches ich schon mal vorbereiten oder eher gesagt testen möchte ob ich dies überhaupt hin bekomme.

Die Latenz ist ja die Abweichung von meinem PC zu dem Server, also würde ich behaupten dass diese abgezogen werden muss. Ansonsten würde ich ja die doppelte Latenz haben oder nicht?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Lass dir die aktuelle Zeit und die gewünschte Zeit und deren Differenz ausgeben, wenn der TimerTask gestartet wird.
 
F

Funkeyfreak

Aktives Mitglied
Mhhh irgendwie ist dass komisch - der Timer wird richtig berechnet aber nun musste ich diesen wieder um 600ms manuell korrigieren.
D.h. es gibt irgendeinen variablen Wert welchen ich noch nicht berücksichtigt habe, aber ich habe keine Ahnung welchen.
 
B

BestGoalkeeper

Bekanntes Mitglied
Die Latenz ist ja die Abweichung von meinem PC zu dem Server, also würde ich behaupten dass diese abgezogen werden muss
Ok, sagen wir es gibt Seite A und Seite B. A kann beim Senden seines Pakets nicht wissen, wie hoch die Latenz ist. Also sendet A nur seine aktuelle Zeit. B muss zu dieser Zeit die Latenz addieren und kann dann die neue Zeit setzen.
Über das HH:mm:ss Format gehen dir natürlich die Millisekunden verloren :( Vielleicht ist das das Problem, denn keine Latenz beträgt 1 Sekunde...
 
F

Funkeyfreak

Aktives Mitglied
Ich benutze das yyyy-MM-dd HH:mm:ss.SSS Format - also sind die Millisekunden berücksichtigt. Außerdem wird die Latenz als Millisekunde erfasst und kann daher doch eig ganz normal abgezogen werden.

Code:
DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

Das komische ist nur dass wenn ich NUR die Latenz addiere bzw. subtrahiere, dass ich dann immer dieselben werte bekomme als Abweichung (also max. 5ms Abweichung) und wenn ich dann weiter anpasse weil es eine Abweichung von 400ms noch gibt (-> also Terminzeit -400ms) dann gibt es größere Abweichungen.
Es kommt mir echt so vor als würde ich irgendeine variable vergessen aber ich finde einfach nichts
 
mihe7

mihe7

Top Contributor
Also, ich verstehe das Problem immer noch nicht. Du hast einen Timer, den Du auf eine bestimmte Zeit einstellst.

1. Frage: wie groß ist die Abweichung beim Eintritt in die Methode des durch den Timer ausgeführten Tasks?

In dieser Methode verwendest Du Robot, um einen Mausklick auszuführen.

2. Frage: wie groß ist die Abweichung am Ende der Methode des durch den Timer ausgeführten Tasks?

Durch den Mausklick wird ein Request an den Server geschickt.

3. Frage: wie groß ist die Abweichung am Server und wann wird diese gemessen?

Wenn am Server die Ankunftszeit gemessen wird, entspräche das in etwa der Latenzzeit, wobei auch eine mehr oder weniger geringe Verarbeitungszeit des Servers enthalten ist.

Messung des Pings funktioniert via IP/ICMP und damit ohne den TCP-Overhead. Gemessen wird dabei auch nicht die Latenz-, sondern die Paketumlaufzeit (Round Trip Time, RTT) wobei keineswegs gesagt ist, dass die Pakete in beiden Richtungen die gleichen Wege nehmen (Latenzzeit ist also im Allgemeinen nicht RTT/2).

Bei TCP wird zum Verbindungsaufbau ein Handshake durchgeführt: Client sendet SYN-Paket, worauf der Server mit einem SYN/ACK antwortet, das wiederum vom Client mit einem ACK, gefolgt von Datenpaketen bestätigt wird. Der erste Teil wäre noch etwa mit einem IP-Request/ICMP-Response-Zyklus (-> RTT) vergleichbar, der schon einmal flöten geht. Der Server erhält das Datenpaket also frühestens nach RTT zzgl. einer unbekannten Latenzzeit, die aber geringer als RTT ausfallen dürfte. Hinzu kommt die Verarbeitungsdauer.

Jetzt rechnen wir mal zusammen. Sofern ein Verbindungsaufbau notwendig ist, würden bis zur Messung der Ankunftszeit am Server also Abweichung Timer + Dauer Verarbeitung Client + RTT (Verbindungsaufbau) + Latenz + Übertragung Daten + Verarbeitungszeit Server zu berücksichtigen. Kann sein, dass ich noch was vergessen/übersehen habe. Die Zeit für den Verbindungsaufbau entfällt ggf. bei folgenden Anfragen.

Kurz: die benötigte Zeit ist schon etwas länger als der Ping.
 
B

BestGoalkeeper

Bekanntes Mitglied
@mihe7 Ich habe die Vermutung,
kriege ich eine "Ankunftszeit" angezeigt.
dass es um dieses Spiel geht: https://www.seekampf.de . Das hab ich auch mal gespielt (damals hieß es noch Inselkampf) und dann wäre es an für sich ganz einfach...
1. Zeit mit der vom Server angezeigten Zeit synchronisieren.
2. Das relativ kleine Fenster zwischen der Ankunftszeit des Cleaner und der Ankunftszeit des Kolo nutzen, meist ist das nur 1 Sekunde, um die Flotte rauszuschicken und zurückzuholen.
3. Nicht mit Java und nicht mit Robot dieses Problem lösen. ;)
 
F

Funkeyfreak

Aktives Mitglied
1. Frage: wie groß ist die Abweichung beim Eintritt in die Methode des durch den Timer ausgeführten Tasks?

In dieser Methode verwendest Du Robot, um einen Mausklick auszuführen.
Dort gibt es keine Abweichung. Ich habe mir die ausführ Zeit nach setzen des Datums und der Zeit anzeigen lassen und kurz bevor der Robot ausgeführt wird. Beide male gab es keine Abweichung.

2. Frage: wie groß ist die Abweichung am Ende der Methode des durch den Timer ausgeführten Tasks?

Durch den Mausklick wird ein Request an den Server geschickt.

Wie kriege ich diese Abweichung? Mit einem Post request? Habe sowas in der Art schon einmal gemacht aber ich habe keine Ahnung wie von einer Website die nötigen Information finde bzw. die nötigen Informationen um ein Post request zu erstellen.

3. Frage: wie groß ist die Abweichung am Server und wann wird diese gemessen?

Wenn am Server die Ankunftszeit gemessen wird, entspräche das in etwa der Latenzzeit, wobei auch eine mehr oder weniger geringe Verarbeitungszeit des Servers enthalten ist.
Also hier Latenzzeit/2 als Annäherung. Ist halt nicht exakt aber genauer geht es nicht oder?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Wie kriege ich diese Abweichung? Mit einem Post request? Habe sowas in der Art schon einmal gemacht aber ich habe keine Ahnung wie von einer Website die nötigen Information finde bzw. die nötigen Informationen um ein Post request zu erstellen.
@mihe7 dürfte gemeint haben, einfach am Ende des TimerTasks noch mal die aktuelle Zeit ausgeben lassen.
 
F

Funkeyfreak

Aktives Mitglied
Nein, wie gesagt geht es um ein Uni Projekt. Seafight habe ich ganz ganz früher mal gespielt als Darkorbit etc. noch angesagt waren.
Habe das Spiel seit mehr als 10 Jahren nicht mehr angefasst ^^
 
F

fhoffmann

Top Contributor
Ganz dumme Frage:
Du schreibst:
Java:
double latencyToServer = ping.doCommand(commands);
int latencyToServer1 = (int)latencyToServer;
Bist du sicher, dass bei dem Cast von double zu int keine Information verloren geht (z.B. die Millisekunden)?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Message Box soll bei bestimmter Zeit angezeigt werden Allgemeine Java-Themen 19
K CET-Zeit benutzen Allgemeine Java-Themen 6
K Geschätze Zeit implementieren Allgemeine Java-Themen 14
Blender3D AWT Fehlerhafte Zeit bei Calender und Date DateFormat Allgemeine Java-Themen 8
2 Joda Time - Localtime mit anderer Zeit vergleichen? Allgemeine Java-Themen 1
O Java Hardware Software Zeit Allgemeine Java-Themen 7
H Bestimmte Aufgaben zur bestimmter Zeit/ in bestimmten Intervallen Allgemeine Java-Themen 3
F Zeit ermitteln Allgemeine Java-Themen 2
Q Zeit in GUI selbst aktualisieren Allgemeine Java-Themen 5
D Klassen Zeit aus NMEA-Stream in SimpleDateFormat Allgemeine Java-Themen 17
M AudioClip in Spiel mehrfach in kurzer Zeit abspielen Allgemeine Java-Themen 3
N java.util.Date - Zeit auf 00:00 setzen Allgemeine Java-Themen 3
R Raum und Zeit Allgemeine Java-Themen 11
S Zeit Allgemeine Java-Themen 4
Z zeit zwischen maus drücken und loslassen Allgemeine Java-Themen 7
T Methodenparameter zur Compile-Zeit überprüfen Allgemeine Java-Themen 8
J Lizenz auf Zeit Allgemeine Java-Themen 8
X Codeabarbeitung innerhalb des Hauptprogramms für bestimmte Zeit unterbrechen Allgemeine Java-Themen 2
prakdi Zeit zum Durchlauf der Schleifen unverständlich!? Allgemeine Java-Themen 3
A JavaVM Zeit Windows 7 Allgemeine Java-Themen 9
T Zeit von einem Server/Webseite auslesen und in eigener GUI anzeigen Allgemeine Java-Themen 6
C Leerzeilen verbrauchen Zeit! Allgemeine Java-Themen 5
J Datum und Zeit Allgemeine Java-Themen 4
data89 Zeit-Diagramm erstellen Allgemeine Java-Themen 11
G JComboBox getSelectedItem Zeit Allgemeine Java-Themen 5
Kr0e Sekunden -> Zeit Allgemeine Java-Themen 14
T Mit Datum und Zeit rechnen Allgemeine Java-Themen 8
B System CPU Zeit / Last auslesen Allgemeine Java-Themen 2
J zeit überscheidungen ermitteln Allgemeine Java-Themen 6
P Thread Demonstrationr eist durch die Zeit Allgemeine Java-Themen 4
A Compilierdatum/Zeit in Code eingenerieren Allgemeine Java-Themen 13
Kidao Wie ordne ich die aktuelle Zeit in einer Zeitreihe eine? Allgemeine Java-Themen 6
J zeit stoppen Allgemeine Java-Themen 11
M Zeit eines rechners im netzwerk ermitteln Allgemeine Java-Themen 6
B Aktuelle Zeit im Format YYYY-MM-DD HH-MM-SS in Logfile schre Allgemeine Java-Themen 8
C Umrechnung der Zeit Allgemeine Java-Themen 8
B 2 JList instanzen wo nur einer zur selben Zeit selektierbar? Allgemeine Java-Themen 8
I Thread eine bestimmte Zeit zur Ausführung geben Allgemeine Java-Themen 2
P Zeit messen Allgemeine Java-Themen 16
M Zeit läuft rückwärts Allgemeine Java-Themen 3
K Thread Safe Zeit Messung Allgemeine Java-Themen 2
D Programmunterbrechung für eine bestimmte Zeit (Millisikunden Allgemeine Java-Themen 10
K ServerSocket benötigt unmengen an Zeit Allgemeine Java-Themen 7
D Zeit messen Allgemeine Java-Themen 2
G try auf zeit Allgemeine Java-Themen 8
R Garbage Collector rennt die ganze Zeit Allgemeine Java-Themen 7
M Fortschritt: verbleibende Zeit errechen. Allgemeine Java-Themen 2
F Zeit errechnen mit GregorianCalendar Allgemeine Java-Themen 8
F vergangene Zeit berechnen Allgemeine Java-Themen 6
A Unix Zeit Allgemeine Java-Themen 2
D Datum und Zeit - Date, Calendar oder GregorianCalender ? Allgemeine Java-Themen 13
X Parameter bei Start über Batch-Datei übergeben(Tag und Zeit) Allgemeine Java-Themen 3
C Vergangene Zeit seit Anwendungsstart messen Allgemeine Java-Themen 5
T Zeit aufaddieren Allgemeine Java-Themen 3
T zeit in java Allgemeine Java-Themen 4
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
R Optimierung beim Vergleichen von 2 Bildern Allgemeine Java-Themen 23
HarleyDavidson Regex - Optimierung Allgemeine Java-Themen 4
K Optimierung kürzester Weg im Warenlager Allgemeine Java-Themen 8
O Algorithmus Optimierung Allgemeine Java-Themen 3
H Optimierung durch Threads Allgemeine Java-Themen 31
C Programmflow-Optimierung Allgemeine Java-Themen 7
G Klasse Optimierung Allgemeine Java-Themen 6
N Optimierung einer Berechnung Allgemeine Java-Themen 17
S jdk versus openjdk - Optimierung von Konstanten? Allgemeine Java-Themen 8
P Optimierung (&& ||) deaktivieren / umgehen? Allgemeine Java-Themen 9
G Optimierung StringBuilder Allgemeine Java-Themen 9
S Optimierung vom Laden von Grafiken Allgemeine Java-Themen 4
S Brainstorming --> Optimierung vonn Gefälleplatten Allgemeine Java-Themen 8
D Optimierung beim Casten Allgemeine Java-Themen 4

Ähnliche Java Themen

Anzeige


Oben