Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    4

    tempo CPU prima esecuzione sballato rispetto ai seguenti

    Salve a tutti!.
    Ho fatto un programma java essenzialmente costituito da 2 classi principali con main (Generatore e Simulatore).
    Il programma prima lancia Generatore,questo crea un istanza che viene passata a Simulatore. Ciò viene ripetuto per 10 volte(1 volta per ogni istanza).
    Ogni volta calcolo il tempo di esecuzione di Simulatore, il problema è che sebbene il tempo di esecuzione dovrebbe essere abbastanza uniforme, il primo lancio di Simulatore impiega un tempo di esecuzione decisamente troppo maggiore rispetto ai seguenti.

    Perchè succede questo? Potrebbe essere un problema di codice o dipende semplicemente dalla JVM?
    Ho calcolato il tempo con System.nanoTime()

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da centa Visualizza il messaggio
    Salve a tutti!.
    Ho fatto un programma java essenzialmente costituito da 2 classi principali con main (Generatore e Simulatore).
    Il programma prima lancia Generatore,questo crea un istanza che viene passata a Simulatore. Ciò viene ripetuto per 10 volte(1 volta per ogni istanza).
    Ogni volta calcolo il tempo di esecuzione di Simulatore, il problema è che sebbene il tempo di esecuzione dovrebbe essere abbastanza uniforme, il primo lancio di Simulatore impiega un tempo di esecuzione decisamente troppo maggiore rispetto ai seguenti.

    Perchè succede questo? Potrebbe essere un problema di codice o dipende semplicemente dalla JVM?
    Ho calcolato il tempo con System.nanoTime()

    Grazie
    Entra in gioco il JIT immagino...
    http://en.wikipedia.org/wiki/Just-in-time_compilation

    Ad ogni modo, di che ordine di grandezza stiamo parlando?
    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
    Nov 2013
    Messaggi
    4
    Innanzitutto grazie per l'interessamento!

    guarda te stesso : è l'ultima colonna!
    image.png
    oppure
    image.png
    Immagini allegate Immagini allegate
    Ultima modifica di centa; 06-11-2013 a 12:37

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Che tipo di elaborazione fai? E quanti dati hai?

    Se fai fare il test 10000 (o più volte) che dati ottieni? Su piccole elaborazioni è molto pesante l'influenza di fattori esterni.

    Comunque l'andamento è compatibile col jit...
    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
    Nov 2013
    Messaggi
    4
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Che tipo di elaborazione fai? E quanti dati hai?

    Se fai fare il test 10000 (o più volte) che dati ottieni? Su piccole elaborazioni è molto pesante l'influenza di fattori esterni.

    Comunque l'andamento è compatibile col jit...
    per calcolare il tempo di esecuzione indipendentemente da fattori esterni c'è un modo?

    ora faccio con più 100000 istanze. Comunque non è che voglia fare un analisi dettagliata, è che quel tempo così alto alla prima esecuzione non credo sia per nulla casuale, probabile infatti che sia il jit o qualche altra cosa che non dipenda dal mio codice...o almeno spero.

    E comunque la mia domanda vale in generale, cioè indipendentemente dal mio programma particolare, perchè il tempo di esecuzione di un programma lanciato una prima volta è decisamente più alto del tempo di esecuzione dei lanci succesivi??

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da centa Visualizza il messaggio
    per calcolare il tempo di esecuzione indipendentemente da fattori esterni c'è un modo?
    Nì. Quello che puoi fare è chiudere tutti i processi inutili durante il tuo test...


    Quote Originariamente inviata da centa Visualizza il messaggio
    E comunque la mia domanda vale in generale, cioè indipendentemente dal mio programma particolare, perchè il tempo di esecuzione di un programma lanciato una prima volta è decisamente più alto del tempo di esecuzione dei lanci succesivi??
    Hai letto il link che ti ho fornito?
    In particolare il paragrafo Startup_delay_and_optimizations
    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
    Nov 2013
    Messaggi
    4
    Si, ed in particolare la frase " it seems that much of the startup time is sometimes due to IO-bound operations rather than JIT compilation ", che è ciò che sospettavo dall'inizio (se l'ho capita)
    Comunque visto che poi devo prendere questo tempo di esecuzione come dato, mi basterà prenderlo per esempio a partire dalla 10ima iterazione!


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.