특정 응용 프로그램에서는 개별 색인 정보를 유지하면서 중첩 루프를 하나로 축소해야합니다.효율적인 루프 붕괴
for j in N:
for i in M:
... A(i,j) ...
// Collapse the loops
for ij in MN:
... A(i,j) ...
말 .IN 문 (휴식 벡터화, 분기 예측 문제) 내가 해낸 그래서 만약 부문/모듈 (비용이 많이 드는 작업)을 사용하여 IJ에서, J를 나는를 복구하는 확실한 방법을 살펴 보았다 다음 (C 스타일 비교 사용) :
j += (i == m)
i *= (i != m)
++i, ++ij
아마도 더 좋은 방법일까요? 감사합니다
이것은 언어에 무관심한 질문이 아닙니다. 하스켈이나 파이썬에서 다른 언어로는 작동하지 않는 방법을 생각할 수 있습니다. 중첩 루프를 축소해야하는 이유를 설명해 주시겠습니까? –
물론 원칙적으로 튜링 언어는 파이썬 제품/범위 조합을 달성 할 수 있지만 효율적이지 않을 수 있습니다. 루프 붕괴의 주된 이유 : 행렬 반복자, 저수준 벡터 라이 제이션 (SSE/큐다를 생각하십시오) – Anycorn