Pythonの標準ライブラリにはプロファイラがあるが、これは deterministic profiler という種類のプロファイラだ。関数が呼び出されたときと関数から抜けるときに登録したコールバック関数を呼び出す仕組みが用意されており、そのコールバック関数で時間を測ることで、各関数の実行時間を測ることができる。 このプロファイラは、短時間の実行で正確な時間を計測できるので、マイクロプロファイリングには適している。しかし、プロファイルを実行するとプログラムの実行速度がかなり低下してしまうという問題もある。 deterministic profiler と別の方式に、 statistical profiler というものがある。 これは、何らかの周期でプログラムのどこを実行しているのかをサンプリングするものだ。実行時間の長い関数ほど何度もサンプリングされるので、サンプル数が実行時間に比例する