인프런 커뮤니티 질문&답변
캐시 강의 관련 질문이 있습니다!
작성
·
519
답변 1
2
Rookiss
지식공유자
이 부분은 캐시 때문이라기보다는, 만들어지는 코드 특성 때문으로 보입니다.
이렇게 안쪽 for문을 컴파일한걸 어셈블리 의사코드로 표현한다면
INC(1증가), CMP(비교), JLE(비교결과에 따라 코드 실행 위치 이동)으로 이루어질테고,
j < 100000을 빠져나가는 시점에 실행 코드 위치를 바꾸기 위해 점프를 해야 할텐데요.
상대적으로 INC, CMP 연산에 비해 JUMP 계열이 오래 걸리기 때문에
점프를 적게 하는 쪽이 성능에 유리할테고,
그렇다 보니 1번 케이스가 아주 미세하게 효율이 더 좋을 것으로 보입니다.
캐시는 메모리와 연관되어 작동하는데 사실 j, i 같은 경우
바로 레지스터에 있는 값을 카운터로 사용할 수도 있기에
만들어지는 코드를 뜯어보기 전에는 꼭 캐시 이슈라 볼 수는 없을 것 같습니다.






아, 어셈블리로 작동방식을 말씀해주시니 이해가 확 되네요!
감사합니다.