본문 바로가기
개발 공부/Java

[자바다] 자바에서 for문이 while문의 속도 차이와 그 이유 (아마...)

by 반달bear 2022. 9. 27.
반응형

백준에서 문제를 풀다보니 왠지 모르게 컴파일 시간에 연연하게 되네요 ㄱ- ... 시간을 줄이기 위해 여러 노력을 해보는데 for문을 사용할때가 while문보다 조금 더 빠른 것을 발견했습니다. 

 

for문을 사용하기 위해서는 변수를 하나 더 할당해야 하기 때문에 당연히 기존의 변수를 사용해 반복문을 구성한 while문이 더 빠를 것이라고 무작정 생각한 제 나름의 상식이 깨어져서 정말 놀랐습니다.

정말 미세한 차이지만 왜 그런가 검색해보니 for문이 변수 하나를 사용하지만 반복문이 끝나면 바로 할당된 메모리를 해제하는 반면 while문은 반복문에 활용되는 변수를 계속 가지고 있기 때문이라고 합니다.

컴파일 된 코드를 보면 for과 while의 차이는 없다는 글도 있고, 속도는 컴파일러의 차이일 뿐이라는 글도 있고... 멀티스레드가 이유라는 글도 있고....

기타 등등의 의견이 있으나 저는 자바의 특성 중 하나가 가비지 컬렉터인 만큼 (막연히) 자바는 자원관리를 굉장히 신경쓰는 언어라고 생각하기 때문에 '메모리가 언제까지 변수를 갖고 있는가'가 속도차이의 중요한 이유라고 추측합니다.

반응형

댓글