Python 2 と Python 3 で実行するプログラムがありますが、速度に大きな違いがあります。スイッチで多くの内部変更が行われたことは理解していますが、io.BufferedReader の違いは非常に大きいです。どちらのバージョンでも、io.BufferedReader を使用します。これは、メイン プログラム ループが一度に 1 バイトのデータしか必要としないためです。以下は、スクリプトの cProfile 出力からの抜粋です ( tottimeではなく cumtime を参照してください)。
Python 2:
ncalls tottime percall cumtime percall filename:lineno(function)
36984 0.188 0.000 0.545 0.000 io.py:929(read)
Python 3:
36996 0.063 0.000 0.063 0.000 {method 'read' of '_io.BufferedReader' objects}
オブジェクトを印刷すると、どちらも次のようなものを返すio.BufferedReader
ので、どちらも BufferedReader を使用していると確信しています。
これが問題のコードです。行 28 を参照してください。呼び出し元は、bufstream を設定する責任があります。使ったbufstream = io.open('testfile', 'rb')
ファイル内の単一バイトを読み取るための BufferedReader の速度に劇的な違いがあるのはなぜですか? Python 2.x の問題を「修正」するにはどうすればよいですか? Python 2.6 と Python 3.1 を実行しています。