私は、ループのトリプルネストを高速化するためにPythonのitertools
モジュールを使用しようとしています。以下のテストコードがitertools'製品の方法および出力を標準トリプルネストされたループを比較:Python itertools - 遅い?
ネストされたループ時間を= 2.35023秒
Itertoolsループ時間は= 2.67766秒
私は何かが足りないのですか?
import numpy
import itertools
import time
n = 128
a = numpy.arange(n**3).reshape((n,n,n))
b = numpy.zeros((n,n,n))
c = numpy.zeros((n,n,n))
t = time.time()
for i in range(n):
for j in range(n):
for k in range(n):
b[i,j,k] = a[i,j,k]
print 'Nested loop time = %g secs' % (time.time() - t)
t = time.time()
for (i,j,k) in itertools.product(range(n), repeat=3):
c[i,j,k] = a[i,j,k]
print 'Itertools loop time = %g secs' % (time.time() - t)
それは
itertools.product
のように見えるん
「私に何か不足していますか?」あなたが見逃しているように見えるのは、誰もitertools.product()のアイデアはループのネストをスピードアップすることではないということです。 –
@Sven Marnach 9.7。 itertools - 効率的なループのためのイテレーターを作成する関数... http://docs.python.org/library/itertools.html –