Perché le applicazioni del profilo utilizzano AOP?

2

Durante l'ottimizzazione delle prestazioni in un'applicazione web, sto cercando strumenti di profilazione delle prestazioni validi e leggeri per misurare il tempo di esecuzione per ciascun metodo. So che il metodo di profiling più semplice è quello di registrare l'ora di inizio e l'ora di fine per ciascun metodo, ma vedo sempre più persone che utilizzano AOP per il profilo (aggiungi @profiled prima di ogni metodo).

Qual è il vantaggio del profiling AOP rispetto al comune modo "log"?

Grazie in anticipo

Vance

    
posta Vance 21.06.2011 - 12:52
fonte

2 risposte

6

Ci sono tre vantaggi:

  1. Non hai la duplicazione del codice. Altrimenti avresti startTime := now() e log('method xyz took', now() - startTime, 'seconds') . Inoltre, se si rinomina il metodo xyz, potrebbe essere necessario aggiornare le istruzioni del registro (a meno che non sia possibile trovare il nome del metodo attualmente chiamato in Java).
  2. Hai un controllo centralizzato. I metodi possono essere contrassegnati per la profilazione (anche se non penso che sia una soluzione pulita), ma alla fine puoi decidere che non vuoi profilarli o che vuoi solo profilare specifiche classi.
  3. Hai una separazione di preoccupazioni. Lo scopo di un metodo è eseguire l'attività a cui è destinato e non il profilo stesso.
risposta data 21.06.2011 - 13:06
fonte
0

When tuning performance in a web application ... easiest profiling method is to log the start time and end time for each method

Tienilo proprio lì: -)

Accordare (cioè trovare i modi per renderlo più veloce) e misurare (vedere quanto durano le cose) non sono la stessa cosa.

Per quale misura è utile quantificare il miglioramento ottenuto dopo aver corretto qualcosa.

Per scoprire cosa aggiustare, la tecnica più semplice è campionare lo stack, perché ogni riga di codice che costa X% di tempo è in pila durante quel periodo, sia che si tratti di un ciclo stretto, una chiamata per I / O, o una chiamata di metodo / metodo di medio livello.

Inoltre, se X% è abbastanza grande da preoccuparsi, non sono necessari molti campioni per trovarlo. (Notate, ho detto find , non measure .) Non appena una riga di codice appare una seconda volta , se puoi ottimizzarla, otterrà una buona velocità , garantita.

Peggio è il problema, meno campioni hai bisogno. Nel limite, puoi diagnosticare un ciclo infinito in un campione .

C'è molte più discussioni su questo.

    
risposta data 22.06.2011 - 23:38
fonte

Leggi altre domande sui tag