別の質問timeit
に答える際に、正の整数と負の整数を使用したリストのインデックス付けの違いをテストするために使用することを提案しました。コードは次のとおりです。
import timeit
t=timeit.timeit('mylist[99]',setup='mylist=list(range(100))',number=10000000)
print (t)
t=timeit.timeit('mylist[-1]',setup='mylist=list(range(100))',number=10000000)
print (t)
私はpython 2.6でこのコードを実行しました:
$ python2.6 test.py
0.587687015533
0.586369991302
次に、python 3.2 で実行しました。
$ python3.2 test.py
0.9212150573730469
1.0225799083709717
それから私は頭をかきむしり、少しグーグル検索をして、これらの観察をここに投稿することに決めました.
オペレーティング システム: OS-X (10.5.8) -- Intel Core2Duo
それは私にとってかなり大きな違いのように思えます (1.5 以上の違い)。特にそのような一般的な操作の場合、python3が非常に遅い理由を知っている人はいますか?
編集
Ubuntu Linux デスクトップ (Intel i7) で同じコードを実行したところ、python2.6 と python 3.2 で同等の結果が得られました。これは、オペレーティング システム (またはプロセッサ) に依存する問題のようです (他のユーザーは、Linux マシンで同じ動作を見ています -- コメントを参照してください)。
編集2
回答の 1 つでスタートアップ バナーが要求されたので、次のようになります。
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
と:
Python 3.2 (r32:88452, Feb 20 2011, 10:19:59)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
アップデート
http://www.python.org/download/から python2.7.3 と python3.2.3 の新しいバージョンをインストールしました
どちらの場合も、私は
「Python xx3 Mac OS X 32 ビット i386/PPC インストーラー (Mac OS X 10.3 から 10.6 用 [2])」
私はOS X 10.5を使用しているため。新しいタイミングは次のとおりです (複数の試行を通じて合理的に一貫しています)。
パイソン2.7
$python2.7 test.py
0.577006101608
0.590042829514
パイソン3.2.3
$python3.2 test.py
0.8882801532745361
1.034242868423462