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
반응형
'잡담 > 궁금증 해결' 카테고리의 다른 글
jar 파일에 한글 입력하기 (feat. PHP, JAVA) (0) | 2024.09.09 |
---|---|
시간 측정 테스트시 주의할 점 (0) | 2024.09.02 |
heap vs TreeMap<key, list> (0) | 2024.05.19 |
Map<String, List<String>> 관련 clear() (0) | 2024.02.26 |
비트연산 과연 더 빠른가? (0) | 2023.02.28 |
댓글