我正在通过遵循tutorial(循环部分)来优化我的Python程序。 根据教程,地图功能可以在速度方面产生更好的结果。
我想调整下面的代码以改进它:
for iphi in xrange(0, NBPHI):
for ith in xrange(0, NBTHETA):
for i in xrange(0, NLAM):
tabFinal[0*NBTHETA*NBPHI*NLAM+i*NBTHETA*NBPHI+iphi*NBTHETA+ith] = (tabPhotonsTot[0*NBPHI*NBTHETA*NLAM+i*NBTHETA*NBPHI+ith*NBPHI+iphi] + tabPhotonsTot[1*NBPHI*NBTHETA*NLAM+i*NBTHETA*NBPHI+ith*NBPHI+iphi])
for iang in xrange(1, phase.N):
dtheta = phase.ang[iang]-phase.ang[iang-1]
答案 0 :(得分:1)
你可以在最里面的循环中分解你正在做的很多算术。 (变量名称很糟糕,但这只是一个例子。)而不是在那里进行大量的乘法,你只需要做一个和一些加法。
Z1 = NBTHETA * NBPHI
Z4 = Z1 * NLAM
for iphi in xrange(0, NBPHI):
Z2 = iphi * NBTHETA
for ith in xrange(0, NBTHETA):
Z3 = ith * NBPHI
Z5 = Z3 + iphi
Z6 = Z2 + ith
Z7 = Z4 + Z5
for i in xrange(0, NLAM):
Z8 = i * Z1
tabFinal[Z8 + Z6] = (tabPhotonsTot[Z8 + Z5] +
tabPhotonsTot[Z7 + Z8])