Il y a deux limitations fondamentales à ce profileur. La première est qu'on s'appuie sur l'interpréteur Python pour répartir rapidement les événements call,return, et exception . Le code C compilé n'a pas besoin d'ëtre interprété, et par suite il est ``invisible'' au profileur. Tout le temps passé dans du code C (incluant les fonctions internes) sera affecté à la fonction Python qui a invoqué le code C. Si le code C appelle à son tour du code natif Python, ces appels seront alors profilés correctement.
La seconde limitation se rapporte à la précision des information de temps. Il y a un problème fondamental avec les profileurs déterministes impliquant la précision. La restriction la plus évidente est que ``l'horloge'' à la base de la mesure bat seulement à la vitesse (typique) d'environ .001 seconde. Donc aucune mesure ne peut ëtre plus précise que le temps de base de cette horloge. Si suffisamment de mesures sont prises, alors ``l'erreur'' tendra à se moyenner. Malheureusement, corriger cette première erreur crée une deuxième source d'erreurs.
Le second problème est que cela ``prend un bout de temps '' depuis le moment où un évènement est émis jusqu'à ce que l'appel du profileur, pour obtenir le temps, retourne réellement l'état de l'horloge. De mëme, il y a un certain décalage quand on sort du programme de traitement des événements depuis l'instant où la valeur de l'horloge a été obtenue ( et ensuite rangée ailleurs), jusqu'au moment où le code utilisateur s'exécute une fois de plus. Le résultat est que les fonctions qui sont appelées de nombreuses fois, ou qui appellent de nombreuses fonctions accumuleront cette erreur. L'erreur qui s'accumule de cette facon est normalement inférieure à la précision de l'horloge ( c.-à-d., moins d'un battement d'horloge), mais cette erreur peut s'accumuler et devenir trés significative. Ce profileur fournit un moyen de se calibrer lui-mëme pour une plateforme donnée de telle sorte que cette erreur puisse ëtre supprimée statistiquement (c.-à-d. en moyenne). Aprés avoir été calibré, le profileur est plus précis (au sens des moindres carrés), mais il peut alors produire des nombres négatifs ( quand les nombres d'appels sont exeptionnellement bas, et que les dieux des probabilités ne sont pas avec vous :-) ). Ne vous alarmez pas à la vue de nombres négatifs dans le profil. Ils n'apparaîtront seulement que si vous avez calibré votre profileur, et les résultats seront alors réellement meilleurs que sans calibration.