반응형
백준에서 문제를 풀다보니 왠지 모르게 컴파일 시간에 연연하게 되네요 ㄱ- ... 시간을 줄이기 위해 여러 노력을 해보는데 for문을 사용할때가 while문보다 조금 더 빠른 것을 발견했습니다.
for문을 사용하기 위해서는 변수를 하나 더 할당해야 하기 때문에 당연히 기존의 변수를 사용해 반복문을 구성한 while문이 더 빠를 것이라고 무작정 생각한 제 나름의 상식이 깨어져서 정말 놀랐습니다.
정말 미세한 차이지만 왜 그런가 검색해보니 for문이 변수 하나를 사용하지만 반복문이 끝나면 바로 할당된 메모리를 해제하는 반면 while문은 반복문에 활용되는 변수를 계속 가지고 있기 때문이라고 합니다.
컴파일 된 코드를 보면 for과 while의 차이는 없다는 글도 있고, 속도는 컴파일러의 차이일 뿐이라는 글도 있고... 멀티스레드가 이유라는 글도 있고....
기타 등등의 의견이 있으나 저는 자바의 특성 중 하나가 가비지 컬렉터인 만큼 (막연히) 자바는 자원관리를 굉장히 신경쓰는 언어라고 생각하기 때문에 '메모리가 언제까지 변수를 갖고 있는가'가 속도차이의 중요한 이유라고 추측합니다.
반응형
'개발 공부 > Java' 카테고리의 다른 글
[자바다] 뒤늦게 적어보는 java 환경변수 세팅하는 법 (0) | 2022.10.27 |
---|---|
[자바다] System.in.read() 사용법을 반복문 그리고 엔터와 함께 살펴보기 (0) | 2022.09.27 |
[자바다] int string등 각 타입에서 'equals' 와 '==' 구별하는 법 (0) | 2022.09.22 |
[자바다] 클래스, 객체, 인스턴스란 무엇일까? 각 개념의 차이점 (0) | 2022.09.19 |
[자바다] 윈도우와 맥에서의 캐리지리턴(\r), 라인피드(\n) (0) | 2022.09.15 |
댓글