Closed kimziou77 closed 2 years ago
직접 실험해보고 결과 내는 모습 멋있네요. 👍 반성하게 됩니다 ㅎㅎ 간단하게 실험하는 거라면 수빈님이 하신 것처럼 하면 되지 않을까요??
System.nanoTime();
메모
실험 덕분에 기억에 잘 남을 것 같아요! 감사합니다.✍️
학습 테스트의 성격이 강해 보여서 저 같은 늅이 보기에는 이상한 점은 안보입니다!
억지?로 피드백하자면(이미 알고 계실 확률 9999%), 앞으로도 이러한 성능 체크 실험을 자주 하실 예정이라면면 따로 테스트용 모듈?은 만드는 건 어떨까 싶습니다.
public class TimeTest {
private TimeTest() {/*no-op*/}
public static Long checkTime(Runnable testTarget, Long count) {
long start = System.nanoTime();
for (int i = 0; i < count; i++) {
testTarget.run();
}
long end = System.nanoTime();
return end - start;
}
}
항상 실습하는 모습 본받고 갑니다..
궁금증의 시작
그런데 성능에 민감한 상황이라면 가변인수가 걸림돌이 될 수 있다. 가변인수 메서드는 호출될 때마다 배열을 새로 하나 할당하고 초기화 한다. - 321p
과연 정말 유의미한 차이가 있을까?
가변인수를 인자로 받는 메서드
vs일반인수를 인자로 받는 메서드
실험 대상 메서드는 다음과 같습니다
실험환경
Win10 64비트
테스트
String 인자 4개를 대상으로, (1억)100,000,000번 실행해보았을때의 성능 테스트를 진행해 보았습니다.
결과
결과가 나왔습니다. 확실히 가변인수가 시간이 더 오래걸리네용
이걸 10번정도 반복한 평균은 다음과 같습니다. 가변인수 : 14,983,366 nanotime (14.98 ms) 일반인수 : 3,438,500 nanotime (3.43 ms) → 실험 결과, 가변인수가 일반인수보다
4.35
배 더 오래 걸린다고 나오네요!궁금증 ❓
대충 머리속에 있는 실험을 해보았는데, 뭔가 이 실험에서 이상한 부분이 있을까요 🤔 피드백 주시면 감사히 받겠습니다!! 이런 실험은 어떻게 하는게 좋을까요