Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    Un semplice cronometro

    Ho scritto un algoritmo in Java. L'algoritmo è abbastanza complesso (cicli iterativi molto lunghi e annidati...), e vorrei cercare di renderlo più veloce. Per questo ho bisogno di sapere con una certa precisione quanto impiega l'interprete Java portarlo a termine.

    Ho consultato la documentazione della classe Timer, ma mi sembra che serva ad altro, ovvero a lanciare un metodo dopo tot millisecondi o ogni tot millisecondi.
    Io non devo lanciare nulla, devo solo cronometrare.

    Come posso fare?

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    codice:
    long t1 = System.currentTimeMillis();
    ...
    ...
    //algoritmo
    ..
    ..
    long t2 = System.currentTimeMillis();
    long delta = t2  - t1;
    in delta hai il numero di millisecondi trascorsi.

    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da Alex'87
    codice:
    long t1 = System.currentTimeMillis();
    ...
    ...
    //algoritmo
    ..
    ..
    long t2 = System.currentTimeMillis();
    long delta = t2  - t1;
    in delta hai il numero di millisecondi trascorsi.

    Grazie mille dell'aiuto, questo metodo sembra funzionare. Ma non capisco come mai mi dà valori molto differenti. A volte impiega 100 ms, altre volte 25... Dipende dagli altri processi in esecuzione, dal garbage collector, ecc.....?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    dipende da varie cose!

    innanzitutto cerca di chiudere tutti i programmi che non ti servono, in modo da evitare inutili perdite di tempo...

    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da Alex'87
    dipende da varie cose!

    innanzitutto cerca di chiudere tutti i programmi che non ti servono, in modo da evitare inutili perdite di tempo...

    Sì, ho chiuso praticamente tutto il possibile, la situazione è migliorata, ma ci sono comunque delle piccole variazioni. Poi ho notato (con altri algoritmi più semplici) che a volte ricevo un valore di 0 millisecondi (!!!), ma mai un valore compreso tra 1 e 10. Qualcosa mi dice che questo cronometro è abbastanza grossolano. Probabilmente questo dipende proprio dal Sistema Operativo, e non c'è niente che Java possa fare.

    Grazie mille

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Alex'87
    non chiedermi perche' sono spuntati queti due... volevo mettere questo:

    cmq, currentTimeMillis restituisce il cosidetto Unix time, il numero di millisecondi trascorsi dal primo gennaio 1970....

    se lavori in ambiente linux, chiama il programma con "time comando" per avere informazioni in piu'...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Mi sono documentato...

    http://www.google.it/search?q=windows+timer+resolution

    Il timer di Windows ha una risoluzione approssimativamente di 10 millisecondi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.