Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435

    Tempo di esecuzione programma

    Ciao, ho bisogno di testare il tempo di esecuzione di una determinata funzione.
    La mia idea è quella di salvarmi 2 valori di tempo prima e dopo e poi farne la differenza, ma vedo che java mette a disposizione tantissime funzioni, ad esempio currentTimeMillis() oppure System.nanotime(), o ancora classi apposite...voi cosa mi consigliate per ottenere una stima quanto più precisa possibile?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Tempo di esecuzione programma

    Originariamente inviato da Dark867
    Ciao, ho bisogno di testare il tempo di esecuzione di una determinata funzione.
    La mia idea è quella di salvarmi 2 valori di tempo prima e dopo e poi farne la differenza, ma vedo che java mette a disposizione tantissime funzioni, ad esempio currentTimeMillis() oppure System.nanotime(), o ancora classi apposite...voi cosa mi consigliate per ottenere una stima quanto più precisa possibile?
    Una delle due che hai citato (e nota, nanoTime() è solo da Java 5 e la "granularità" non è detto che sia proprio di 1 ns) e poi fai la differenza tra prima e dopo.
    Con i millisecondi/nanosecondi ti puoi calcolare tutto il resto (finché ha senso, fino ai giorni cioè).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Ok, ma che differenza c'è tra le 2?
    Inoltre ho provato con nanotime ma il tempo varia anche parecchio tra un'esecuzione e l'altra ...ad esempio tra 2 esecuzioni successive mi è saltato anche da 143 a 200 ns!

    Ti spiego il problema: ho una funzione che opera su un array e devo valutarne il tempo di esecuzione al variare della dimensione di questo array (diciamo per incrementi di 10 ogni volta). Secondo me il problema è che c'è la jvm in mezzo e questo causa un ritardo aleatorio...forse mi converrebbe fare una media tra ad esempio 5 esecuzioni sullo stesso numero? Oppure dici che dovrei passare ad esempio al C?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dark867
    Ok, ma che differenza c'è tra le 2?
    Millisecondi vs Nanosecondi. Devo anche spiegare queste cose sul tempo?

    Originariamente inviato da Dark867
    Ti spiego il problema: ho una funzione che opera su un array e devo valutarne il tempo di esecuzione al variare della dimensione di questo array (diciamo per incrementi di 10 ogni volta). Secondo me il problema è che c'è la jvm in mezzo e questo causa un ritardo aleatorio...forse mi converrebbe fare una media tra ad esempio 5 esecuzioni sullo stesso numero? Oppure dici che dovrei passare ad esempio al C?
    In generale per fare statistiche sui tempi di esecuzione di operazioni davvero brevissime che durano frazioni piccolissime del secondo, di norma è buona cosa ripetere il test N volte e poi dividere la somma dei tempi per N.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Originariamente inviato da andbin
    Millisecondi vs Nanosecondi. Devo anche spiegare queste cose sul tempo?
    XD
    Bè ma credo che un programmatore, se non vive solo per programmare, dovrebbe sapere come passare tra una misura di tempo e l'altra quindi nel dubbio ho chiesto, pensavo ci fosse anche una differenza in termini di prestazioni dovuta a differenti implementazioni delle 2.

    In generale per fare statistiche sui tempi di esecuzione di operazioni davvero brevissime che durano frazioni piccolissime del secondo, di norma è buona cosa ripetere il test N volte e poi dividere la somma dei tempi per N.
    Va bene, secondo la tua esperienza quale valore di N è accettabile? Va bene 5-10?

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Dark867
    Va bene, secondo la tua esperienza quale valore di N è accettabile? Va bene 5-10?
    Almeno 100/1000.
    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
    Feb 2007
    Messaggi
    4,157
    e poi dovresti cercare di non avere in esecuzione altri programmi che usano la jvm (es un IDE come Netbeans o Eclipse) perché potrebbero influenzare i tempi di esecuzione.
    Per valutare bene quanto tempo impiega il tuo programma a girare dovresti avere il meno possibile aperto

  8. #8
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Ok, grazie a tutti!

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.