언어에 구애받지 않는 질문입니다. 루프는 거의 모든 언어에 있으며 동일한 원칙이 모든 곳에 적용됩니다. 컴파일러는 루프 최적화와 관련하여 가장 무거운 작업을 수행하지만 프로그래머로서 루프를 최적화된 상태로 유지해야 한다는 점을 알아야 합니다.
루프에 넣은 모든 것이 모든 루프 반복에 대해 실행된다는 것을 깨닫는 것이 중요합니다. 루프 최적화의 핵심은 수행하는 작업을 최소화하는 것입니다. 매우 빠른 것처럼 보이는 작업도 여러 번 반복하면 오랜 시간이 걸립니다. 1마이크로초가 걸리는 작업을 백만 번 실행하면 완료하는 데 1초가 걸립니다.
루프 내에서 또는 시작 조건에서도 len(list)과 같은 것을 실행하지 마십시오.
예시
a = [i for i in range(1000000)] length = len(a) for i in a: print(i - length)
보다 훨씬 빠릅니다.
a = [i for i in range(1000000)] for i in a: print(i - len(a))
또한 바이너리 크기를 희생시키면서 프로그램의 실행 속도를 최적화하려고 시도하는 루프 변환 기술인 Loop Unrolling(https://en.wikipedia.org/wiki/Loop_unrolling)과 같은 기술을 사용할 수 있습니다. 시공간 절충.
명시적 for 루프 대신 맵, 필터 등과 같은 함수를 사용하면 성능이 약간 향상될 수도 있습니다.