10.7 Calibrazione

Il profiler sottrae una costante dal tempo accumulato per la gestione di un ogni evento in modo da compensare il rallentamento dovuto alla chiamata della funzione timer, mostrando immediatamente i risultati. Di predefinito, la costante vale 0. La seguente procedura può venire usata per ottenere una costante migliore su una specifica piattaforma (vedete in proposito il capitolo precedente sulle limitazioni).

import profile
pr = profile.Profile()
for i in range(5):
    print pr.calibrate(10000)

Questo metodo esegue il numero di chiamate Python fornite come argomento, prima direttamente e poi attraverso il profiler, misurando il tempo di entrambi. Poi calcola il rallentamento nascosto dovuto all'esecuzione del profiler stesso, che restituisce come numero in virgola mobile. Per esempio, su un Pentium a 800 MHz con Windows 2000 ed usando come timer la funzione Python time.clock(), il numero magico è circa 12.5e-6.

Lo scopo di questo esercizio è quello di ottenere un risultato giusto e consistente. Se il vostro computer è molto veloce, o la funzione di timer ha un scarsa risoluzione, potreste avere la necessità di superare i 100000, o anche 1000000, per ottenere risultati consistenti.

Quando si ottiene una risposta adeguata, avete tre modi per usarla:10.3

import profile

# 1. Applicare la costante ottenuta a tutte le istanze del profiler 
#    create d'ora in poi.
profile.Profile.bias = your_computed_bias

# 2. Applicare la costante ottenuta ad una specifica istanza del profiler.
pr = profile.Profile()
pr.bias = your_computed_bias

# 3. Specificare la costante ottenuta nel costruttore dell'istanza.
pr = profile.Profile(bias=your_computed_bias)

Se ne avete la possibilità, potreste voler scegliere una costante ancora più piccola, cosicché i vostri risultati saranno ``meno spesso'' affetti dalla presenza di numeri negativi nelle statistiche del profiler.



Footnotes

... usarla:10.3
Prima di Python 2.2, era necessario modificare il codice sorgente del profiler per adattare la costante da utilizzare per la calibrazione. Potete sempre farlo, ma questo metodo non è descritto accuratamente perché non è più necessario.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.