고전적인 for-loop witout을 보여준 튜토리얼이나 강의는 본 적이 없습니다. 가 증가 얻을 것이다 전에사전 증가와 사후 증가 - 루프 속도
for (int i=0; i<array.length; i++) {}
당신이 POST-증가를 사용하는 경우 는 변수 "i"가, 캐시됩니다! 그러나 이것은 명령이 직접 끝나기 때문에 의미가 없습니다. 첫 번째 루프에서
: 당신이 지금까지 이해하지 않은 경우
for (int i=0; i<array.length; ++i) {}
, 나는 (내 영어에 대한 SRY) 조금 더 가서 : 제 생각에는
이 더 의미가 있습니다 :
- i의 실제 값을 캐시합니다. (참고 : 사이에 이동, 그래서이 일을 아무 이유없이)
- 증가 내가
- 두 번째 루프에서 앞서
를 이동
- 증가 내가 직접
- 이동 앞으로.
따라서 두 번째 루프는 품질 손실이없는 경우보다 성능이 좋습니다. 다른 의견?
두 번째 루프의 성능이 더 좋은지 확인하는 유일한 방법은이를 측정하는 것입니다 (어셈블리 코드가 다르게 생성되었다고 가정). 'int'를 사용하면 차이가 나는지 의심 스럽습니다. 일부 반복자 유형으로, 아마. ** 편집 ** 나는 C++을 말하고 있습니다. – juanchopanza
"변수 *가 캐시 될 것입니다 *"라고 말하면 상황에 대한 이해 나 연구를 사용합니까, 아니면 그냥 추측하고 있습니까? –
나는 C++ 태그를 보았지만 사라졌고 Java 만 보았고 Java 용 dup를 게시했습니다. –