Calcolo tempo inizio - fine chiamata metodo

di il
4 risposte

Calcolo tempo inizio - fine chiamata metodo

Buongiorno
avrei bisogno di calcolare il tempo che passa dal momento in cui viene invocato il servizio a quando la chiamate termina.
In java c'è un modo per fare questo? in partica piazzare una sorta di timer ad inizio metodo ed un altro alla fine. Ho provato a cercare ma non go trovato nulla di adatto.

4 Risposte

  • Re: Calcolo tempo inizio - fine chiamata metodo

    Spiegati meglio.

    Prendere il tempo di esecuzione di una funzione e' assolutamente banale

    start = timestamp()
    chiamata
    tempo = timestamp()-start

    QUINDI non e' questo che chedi o non lo puoi fare. PERCHE'?
  • Re: Calcolo tempo inizio - fine chiamata metodo

    Test90 ha scritto:


    In java c'è un modo per fare questo?
    Un indizio:
    System.nanoTime()


    Poi comunque dovresti anche specificare meglio il contesto. Ti serve in un solo punto della applicazione? O devi farlo in maniera abbastanza ricorrente nella applicazione? La informazione sul tempo trascorso ti serve solo per fini di logging (il classico log "xyz executed in NNN ms") o ti serve per qualcosa di più "ampio" es. metriche generali da memorizzare, analizzare e/o esporre all'esterno?

    La necessità di catturare il tempo impiegato di "qualcosa" è una cosa ricorrente. In varie librerie ci sono funzionalità del genere. La ben nota Google Guava ha una classe chiamata Stopwatch. Mentre invece ad esempio il framework Spring ha una classe chiamata similarmente StopWatch. Anche la Apache Commons Lang ha una classe StopWatch! Sono tutte molto simili, sono tutte quasi "cugine" tra di loro come concetto/implementazione.

    Se non puoi/vuoi usare queste funzionalità già fatte, puoi sempre fare una classe similare che almeno a livello super-basilare richiede poche decine di righe di codice.
  • Re: Calcolo tempo inizio - fine chiamata metodo

    Forse questa StopWatch è quella che fa al caso mio.

    Devo solo calcolare il tempo trascorso da quando viene invocato il servizio (utente che clicca bottene invio) a quando riceva la response a fini di logging. Quindi piazzo tutto nel metodo del controller secondo voi? uno appena si entra e la fine una riga prima del return?
  • Re: Calcolo tempo inizio - fine chiamata metodo

    Test90 ha scritto:


    Devo solo calcolare il tempo trascorso da quando viene invocato il servizio (utente che clicca bottene invio) a quando riceva la response a fini di logging. Quindi piazzo tutto nel metodo del controller secondo voi? uno appena si entra e la fine una riga prima del return?
    Quelle varie classi StopWatch si usano tutte più o meno QUASI allo stesso modo: si ottiene/imposta un oggetto StopWatch in stato "started", si eseguono la/e operazione/i da cronometrare, quindi si invoca un metodo tipo stop() sull'oggetto StopWatch.

    A quel punto si può ottenere il tempo sicuramente in vari modi, anche già in stringa con il valore scalato giusto e con l'unità es. ms, us, ns appropriata.

    Vedi documentazione javadoc per lo StopWatch che intendi usare.
Devi accedere o registrarti per scrivere nel forum
4 risposte