Codifica ui per misurare le prestazioni

5

Mi è stato assegnato il compito di utilizzare interfaccia utente codificata per misurare le prestazioni su un'applicazione desktop Windows proprietaria . L'esigenza è quella di misurare il tempo necessario alla visualizzazione della pagina successiva / dello schermo dopo che un utente ha fatto clic su un controllo.

Ad esempio: un utente inserisce il proprio ID e accesso PW e clic. È necessario misurare il tempo necessario per la visualizzazione della schermata successiva quando l'utente fa clic sul pulsante di accesso. Capisco la necessità di definire cosa indica che lo schermo è caricato e pronto per l'uso. Un approccio consiste nell'utilizzare control.WaitForControlReady e utilizzare BeginTimer / EndTimer.

Il codice è un modo affidabile e accurato per misurare il tempo?
WaitForControlReady è il metodo migliore per determinare quando un controllo è pronto per l'uso?

    
posta gnat 11.01.2012 - 02:02
fonte

1 risposta

1

Difficoltà: registra il tempo totale

Se disponi di uno script < > sezione alla fine della tua pagina HTML, non verrà eseguita fino a quando il resto della pagina non sarà completamente caricato e probabilmente renderizzato (ma controllami su quello). Nota che il client e il server probabilmente non avranno lo stesso tempo di clock, ma potresti avere uno < script > tag alla fine del documento invia una richiesta AJAX al server con un token univoco incorporato che dice al server, "Richiesta (identificatore richiesta) è completa e visualizzata dal browser."

Sul lato server, le richieste che si desidera applicare all'ora dovrebbero inserire un hash degli identificatori di richiesta originali e i timestamp nella sessione dell'utente. Il messaggio "request-complete" da quell'utente verrà inserito come una nuova richiesta che dovrebbe cercare l'identificativo della richiesta per la richiesta nella sessione, ottenere il timestamp di inizio e scrivere il tempo di fine meno la differenza di avvio a un registro o qualsiasi altra cosa. Quindi dovrebbe rimuovere quell'identificatore di richiesta dal hashtable.

In realtà, potrebbe essere necessario pulire l'hashtable, specialmente se l'utente annulla una richiesta (non verrà mai completata) o si disconnette, o semplicemente chiude il browser. Inoltre, se l'utente richiede qualcosa che non termina nel tuo codice JavaScript completo, ad esempio immagini, pagine a cui hai dimenticato di aggiungere il tag, ecc. Questo probabilmente non è qualcosa che vuoi lasciare in esecuzione nel codice di produzione.

Più semplice: tempo di richiesta di log e tempo di rendering separatamente

Qualcosa di più semplice da misurare e probabilmente altrettanto utile dal punto di vista del business è quanto tempo impiega il web server a soddisfare la richiesta. Il metodo principale del nostro master-servlet inizia con:

// Start timing the request
long startMs = System.currentTimeMillis();

E termina con:

long elapsedMs = System.currentTimeMillis() - startMs;

if (elapsedMs > LONG_TIME) {
    logger.error("Done REALLY SLOWLY: " + elapsedMs + "ms");
} else if (elapsedMs > PRETTY_LONG_TIME) {
    logger.warn("Done SLOWLY: " + elapsedMs + "ms");
} else {
    logger.info("Done: " + elapsedMs + "ms");
}

Ora i registri delle applicazioni sul tuo server hanno errori per richieste lunghe. Si potrebbe anche averlo pagina se qualcosa è lento! Per distinguere tra tempo del browser e ora del server, è sufficiente utilizzare gli strumenti integrati in Chrome o Firefox che mostrano la durata di ciascuna parte di un edificio della pagina. C'è un grafico temporale e altre cose fantastiche integrate lì.

Forse se hai un'applicazione all-AJAX è un problema, ma puoi costruire questo stesso timing sul lato server e inviare un risultato di timing al server.

    
risposta data 07.09.2012 - 19:24
fonte

Leggi altre domande sui tag