현재 소프트웨어의 번역 부분을 최적화하는 중이며, 좌표는 x
번 번역됩니다. 현재 번역 코드는 translate
함수이고 translate_map
함수의 부분은 최적화되어 있습니다.Python : for 루프 대. 지도
내가 map
기능 대신 나는 아래의 테스트 케이스를 실행하면 루프가
C.
에서 수행되기 때문에 가능for
루프로 사용하는 것을
here을 읽을 수는
map
기능은 실제로
for
표준보다 느리게 실행 고리.
map
이 기존의
for
루프보다 느리게 작동하는 이유는 무엇입니까? 번역 기능을 어떻게 더 빨리 실행할 수 있도록 최적화 할 수 있습니까?
는
import time
def translate(atom_list):
for i in atom_list:
i[1]+=1
i[2]+=1
i[3]+=1
atoms = [[1,1,1,1]]*1000
start = time.time()
for x in xrange(10000):
translate(atoms)
print time.time() - start
atoms = [[1,1,1,1]]*1000
start = time.time()
def translate_map(atom_list):
atom_list[1]+=1
atom_list[2]+=1
atom_list[3]+=1
for x in xrange(10000):
map(translate_map,atoms)
print time.time() - start
출력 :
2.92705798149
4.14674210548
numpy를 사용할 수없는 이유가 있습니까? – jamylak
코드를 타이밍하기 위해'timeit' 모듈을 사용하십시오. –
이러한 미세 최적화를 수행하는 대신 NumPy를 사용하십시오. 'map'은 아마도 10 %의 실행 시간을 절약 할 수 있지만 올바르게 사용될 경우 몇 배의 속도 향상을 줄 수 있습니다. –