|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
[java] nanoTime()
ciao a tutti, implementando un test per la connessione tcp tra due client prendo un timestamp1 all'invio del mex dal client1 e ne prendo unaltro (timestamp2) alla ricezione del mex sul client2 e ne calcolo la differenza per ottenere il tempo impiegato alla trasmissione del pacchetto.
il problema è che su un pc il timestamp è dell'ordine di 10^12 mentre in un'altro è di 10^15 e di conseguenza il risultato della sottrazione mi da un valore non verosimile(qualcosa come 10^4 sec) dove è il problema? i pc sono sincronizzati in orario al secondo. grazie anticipatamente |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jun 2009
Messaggi: 38
|
Non so il tuo problema mi fa pensare ad una discrepanza di versioni del JDK..anche se non ne sono per niente certo. Io avrei controllato la versione dei rispettivi JDK o JRE a seconda di quale usi. Se non dovesse bastare mi arrangerei cambiando a manina l'ordine di grandezza.
EDIT: ok su ho detto una fesseria.. se i due pc sono veramente sincronizzati al secondo (anche stessa data) non dovrebbero esserci differenze in alcun caso! Ultima modifica di nalsk : 02-07-2010 alle 19:16. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
tutto sincronizzato....le versioni sono le stesse
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
credo dipenda dalla risoluzione del timer di sistema
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Quote:
quindi fra due macchine nanotime non serve a na cippa?
|
|
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
Quote:
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Penso che dovresti usare currentTimeMillis. Ad ogni modo non ho capito come hai fatto a sincronizzare perfettamente gli orari dei due computer.
|
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
Quote:
...secondo voi è piu corretto mettere i timeStamp sulla stessa macchina?? e quindi prima e dopo la spedizione o prima/dopo la ricezione... |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
La cosa migliore sarebbe calcolare il tempo di andata e ritorno, quindi sì sullo stesso pc, però fai partire il timer, invii il messaggio, arriva la risposta, fermi il timer. Lo fai un po' di volte e fai una media.
In ogni caso, avendo sincronizzato i pc in quel modo non ha senso ricorrere ad una precisione al nanosecondo. Al millisecondo è già fin troppo, anzi dubito che otterrai dei valori significativi in ogni caso con questo metodo. |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Puoi usare una istanza (due) della classe Calendar e i relativi metodi, sembra fatta appositamente....
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
nanotime misura intervalli di tempo, precisamente l'intervallo che occorre tra due invocazioni successive dello stesso metodo nanoTime. A differenza di currentTimeMillis il "timer" è inizializzato alla prima invocazione con un valore arbitrario. Così due nanoTime su macchine diverse restituiscono valori assolutamente incomparabili (mentre per currentTimeMillis si tratta sempre di un valore relativo ad una data prefissa rispetto alle impostazioni di sistema).
In ogni caso nanoTime è applicabile al tuo caso perchè il tuo caso è sensatamente gestibile solo se la misurazione avviene su un'unica macchina. Può essere chi invia, chi riceve o una terza macchina (un time server) ma sempre una dev'essere altrimenti la misurazione dipende da fattori che non puoi controllare. Esegui un nanoTime quando invii la richiesta, ne esegui un'altro quando ricevi la risposta, la differenza tra i due è il tempo trascorso secondo la risoluzione della più precisa funzione di temporizzazione disponibile alla piattaforma (che potrebbe benissimo essere la stessa di currentTimeMillis). E questo rende irrilevante la sincronizzazione.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#15 | |
|
Member
Iscritto dal: Oct 2009
Messaggi: 30
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:10.




















