Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 28-07-2004, 18.28.35   #1
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
[Java] System.currentTimeMillis()

Ragazzi, mi serve un aiuto!

Non riesco ad avere dei risultati decenti dalla funzione System.currentTimeMillis(). Sembra che conosca solo i multipli di 15 o 16. Dopo un'oretta di test vari (per il benchmark, non è ancora finito eh! ) mi sono venuti un po' di dubbi sul suo funzionamento e in effetti... ho buttato giù ste due righe per aver conferma:

Codice:
    public static void main(String[] args) {
        long inizio = 0;
        long fine = 0;
        Object a = null;
        
        for (int j=0; j<30; j++){
            inizio = System.currentTimeMillis();
            System.out.print(inizio + "  ");

            for (long i=0; i<(100000 + j*3000); i++)
                a = new Object();

            fine = System.currentTimeMillis();
            System.out.println(fine);

            System.out.println(j + " " + (fine-inizio));
        }
    }
e questo è l'output:
Codice:
1091031872828  1091031872843
0 15
1091031872843  1091031872843
1 0
1091031872843  1091031872843
2 0
1091031872843  1091031872859
3 16
1091031872859  1091031872859
4 0
1091031872859  1091031872859
5 0
1091031872859  1091031872859
6 0
1091031872859  1091031872859
7 0
1091031872859  1091031872859
8 0
1091031872859  1091031872875
9 16
1091031872875  1091031872875
10 0
vi risparmio la continuazione dell'output tanto ci siamo capiti... non riesce a conteggiare i millisecondi, ma va a salti di 15 o 16...

Che cosa posso fare???
Dav82 non è collegato   Rispondi citando
Vecchio 28-07-2004, 18.51.05   #2
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Mi do una parziale risposta da solo:

Quota:

Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond, the granularity of the value depends on the underlying operating system and may be larger. For example, many operating systems measure time in units of tens of milliseconds
Ma come faccio allora?
Devo misurare delle cose che durano poche decine di ms, e se mi quantizza in blocchi da 15ms non riesco a fare un tubo!
Dav82 non è collegato   Rispondi citando
Vecchio 28-07-2004, 21.36.33   #3
Sergio Neddi
Gold Member
Top Poster
 
L'avatar di Sergio Neddi
 
Registrato: 07-04-2000
Loc.: Padova-Vicenza
Messaggi: 4.814
Sergio Neddi promette bene
E ti è andata bene.

Pensa che l'orologio dei PC (parlo di quelli originali, gli "antichi" 8088) anche se poteva segnare i centesimi di secondo in realtà veniva aggiornato circa ogni diciottesimo (se non erro) di secondo e quindi circa ogni 55 ms in quanto questa era la frequenza del timer che generava l'interrupt.

Ora molte cose nei PC sono cambiate, ma non credo che sia facile fare misure così precise senza utilizzare un'hardware dedicato.

Ricordo che antichi trucchi di programmazione leggevano il contatore di riga della scheda video (tanto erano solo CGA o Hercules, rare EGA) per ricavarsi temporizzazioni più veloci.
___________________________________

Con il PC risolvo molti problemi che prima non avevo. - Coltiva Linux che Windows si pianta da solo!
Sergio Neddi non è collegato   Rispondi citando
Vecchio 28-07-2004, 21.55.09   #4
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Grazie Sergio!

Quindi l'unica cosa da fare (come ho già fatto) è usare questo meccanismo ovvissimo: fare eseguire lo stesso compito più volte ripetutamente, calcolare il tempo totale e poi dividere...

sigh
Dav82 non è collegato   Rispondi citando
Vecchio 28-07-2004, 22.04.05   #5
Sergio Neddi
Gold Member
Top Poster
 
L'avatar di Sergio Neddi
 
Registrato: 07-04-2000
Loc.: Padova-Vicenza
Messaggi: 4.814
Sergio Neddi promette bene
Si, questo si fa in molti casi, ma non sempre è possibile, se si deve misurare una cosa molto breve e non ripetitiva è impossibile.

E comunque fa perdere un sacco di tempo per niente.
___________________________________

Con il PC risolvo molti problemi che prima non avevo. - Coltiva Linux che Windows si pianta da solo!
Sergio Neddi non è collegato   Rispondi citando
Vecchio 10-08-2004, 17.13.28   #6
pholcus
Linux Supporter
 
L'avatar di pholcus
 
Registrato: 02-12-2000
Loc.: Monza
Messaggi: 1.987
pholcus promette bene
mmm...

Credo tu possa provare ad usare linux invece che windows..
su Linux&C. di questo mese c'e' un articolo su come modificare poche righe del codice del kernel e creare un modulo per ottenere un sistema "soft realtime", aumentando la frequenza degli interrupt e di conseguenza la risoluzione..viene cambiato anche il tipo di schedulazione..

Ora nn ho sottomano linux&c. e nn sono a casa fino a settembre..cmnq appena ti rispondo di nuovo..

Appena posso provo il programma sotto linux e vedo se va meglio..

ciao
pholcus non è collegato   Rispondi citando
Vecchio 10-08-2004, 17.19.00   #7
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Grazie mille pholcus! (Y)

Sono quasi totalmente a digiuno di pinguini, ma visto che mi dici così... potrei farci un pensierino!


Purtroppo il sistema dovrà cmq girare su qualsiasi piattaforma, e in particolare uno dei server che saranno utilizzati più spesso è Win.
Sarebbe però interessante lo stesso per fare delle rilevazioni magari più approfondite.

Aspetto altre notizie e intanto cerco anch'io!
Grazie!

Ultima modifica di Dav82 : 10-08-2004 alle ore 17.35.41
Dav82 non è collegato   Rispondi citando
Vecchio 11-08-2004, 01.26.23   #8
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
E' un problema che ho riscontrato anch'io sotto Windows, non è soltanto in Java, anche se fai roba nativa in C++ ad esempio e vuoi scrivere una funzione che fa un polling per 'n' millisecondi, basandoti sul sistema vedi che c'é un certo margine tra le rilevazioni... credo che non si possa ottenere una precisione più accurata .. almeno sotto Windows...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[JAVA] jdbc odbc correlazione database rosariok24 Programmazione 13 03-06-2006 14.10.11
[Java] Lettura xml con spazi GiulioCesare Programmazione 0 26-05-2006 11.27.30
[java] netbeans: server tomcat incluso nell'installazione miguel Programmazione 0 31-03-2006 18.32.04
[Java] Leggere file Xml GiulioCesare Programmazione 1 15-03-2006 11.48.21
[Java] Non trova la classe espiritos Programmazione 7 08-03-2006 14.16.42

Orario GMT +2. Ora sono le: 11.54.55.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.