10.4 Cos'è il profilo deterministico?

Un profilo deterministico rappresenta una situazione in cui vengono monitorate tutte le chiamate alle funzioni, le chiusure dalle funzioni e le eccezioni, e vengono effettuati controlli precisi negli intervalli tra questi eventi (durante i quali viene eseguito il codice dell'utente). Al contrario, un profilo statistico (che non viene implementato in questo modulo), analizza casualmente il puntatore effettivo dell'istruzione e deduce dove venga speso il tempo. Quest'ultima tecnica di solito causa un minore sovraccarico (visto che non c'è bisogno di predisporre il codice), ma offre solo indicazioni relative riguardo al luogo in cui il tempo viene speso.

In Python, dato che durante l'esecuzione di un programma c'è un interprete attivo, non è necessaria la presenza di codice predisposto per eseguire un profilo deterministico. Python fornisce automaticamente un hook(richiamo facoltativo) per ogni evento. Inoltre, la natura interpretata di Python tende ad aggiungere un tale sovraccarico all'esecuzione, che in una normale applicazione il profilo deterministico causa solo un piccolo rallentamento. Come risultato il profilo deterministico non è poi così costoso ed inoltre offre molte statistiche run time riguardo l'esecuzione di un programma Python.

Le statistiche sul conteggio delle chiamate può venire utilizzato per identificare difetti nel codice (conteggi strani) ed per individuare particolari punti in cui ci avvengono un gran numero di chiamate (conteggi molto elevati). Le statistiche sul tempo interno di esecuzione sono utili per identificare ``cicli caldi''(in cui si spende molto tempo) che dovrebbero venire ottimizzati. Le statistiche sul tempo cumulativo sono utili invece nel localizzare errori di alto livello nella selezione degli algoritmi. Notate che la particolare gestione del tempo cumulativo di questo profiler permette di confrontare direttamente gli algortmi implementati ricorsivamente con quelli implementati iterativamente.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.