본문 바로가기
잡담/궁금증 해결

변수 선언 후 인자 전달 vs 인자 전달

by lms0806 2024. 2. 14.
728x90
반응형

개발을 진행하던 중, 한가지 궁금점이 들었습니다.

String s = "1";
print(s);
print("1")

 

의문점

  • 둘 중 어느게 빠를까?
  • 둘의 메모리 사용량은 같을까?
  • 다르다면, 어느게 메모리를 적게 사용할까?

정확하게 분석이 불가능하여 시간 측정 및 메모리 측정을 하였습니다.

 

1.

String s;
for (int i = 0; i < 1000000000; i++) {
	s = "1";
	print(s);
}

 

 

2.

for(int i = 0; i < 1000000000; i++){
	print("1");
}

해당 코드들로 시간 측정을 하였고, 함수는 System.currentTimeMillis() 을 사용하였습니다.

 

결과

1. 시간차이(ms) : 5

2. 시간차이(ms) : 4

 

미세하게 변수를 선언하지 않고 사용한 경우가 빨랐습니다.

 

메모리 측정은 jmap -histo:live를 활용하여 진행하였습니다.

측정하기 전에 '당연히 변수를 선언하지 않는 쪽이 메모리를 더 적게 사용하지 않을까?'라고 생각하였습니다.

 

결과

1. 
instances : 27734
bytes : 5642296
2. 
instances : 27732
bytes : 5642248

 

미세하게 변수를 사용하는 쪽이 메모리를 더 많이 사용하는 것으로 확인 되었습니다.

 

결론

  • 어느 방식을 사용하든 차이는 별로 없다.
  • 변수를 선언 후 사용하는 경우는, 해당 코드를 다른 사람들도 쉽게 이해할 수 있도록 사용할 수 있다는 장점이 있다.
  • 변수를 사용하지 않은 경우, 시간과 메모리를 신경써야 하는 경우에 좋게 작용할 수 있다.
728x90
반응형

'잡담 > 궁금증 해결' 카테고리의 다른 글

Map<String, List<String>> 관련 clear()  (1) 2024.02.26
비트연산 과연 더 빠른가?  (1) 2023.02.28

댓글