목록성능 (3)
오늘이군
자바에는 int, long 와 같은 기본형 타입(Primitive type) 이 있고, 그 기본형을 Wrapping 한 Wrapper Class 가 있습니다.결론적으로 얘기하면 기본형 타입 연산이 빠릅니다.예전에는 long 타입끼리만 연산이 가능했지만 JDK1.5 버전부터 부터는 auto(un)boxing 을 지원하게 되었습니다. 개발하기는 편해졌지만 별 생각없이 개발하다보면 큰 성능 이슈를 발생시키게 됩니다.Long sum = 0L; for(long i = 0; i < Integer.MAX_VALUE; i++) { sum += i; }와 같이 개발하면 안된다는 얘기 입니다. Boxing, UnBoxing 이 일어나지 않게 개발해야 합니다.이것이 얼마나 속도 차이가 나는지 코드로 보겠습니다. 아래 내용처..
자바에서 문자열 처리를 할 때 무심코 String name = "홍" + "길동"; 라는 코드를 작성합니다. 예전에 어디선가 StringBuffer 를 사용하라는 얘기를 들었지만 일일이 append 하는 것도 귀찮고 toString() 도 해야 하는 것이 번거롭다는 생각이 들어 더하기 연산을 해버리는 데요, 이게 문제가 있습니다.String 은 불변(immutable) 객체 입니다.예를 들면, str = str + "ab"; 은 100번 주소에 객체가 만들어지지만 다시 str 을 변경하려는 시도를 하면 불변 객체 이므로 새롭게 150 번 주소에 생성을 합니다. 그럼 남은 100번은 어떻게 될까요?네, GC 대상이 됩니다. 무심코 코드를 이렇게 작성하다보면 불필요한 객체가 많이 생겨서 GC 가 빈번히 발생..
참고 https://youtu.be/6Iq5iMCVsXA http://ledgku.tistory.com/33 복잡도 시간 복잡도(time complexity) : 어떠한 연산을 수행하면서 사용한 시간을 나타낸다 공간 복잡도(space complexity) : 사용한 메모리의 사용량 복잡도는 보통 빅오(대문자 O) 표기법을 사용하며, 알고리즘 평가 사이트는 빅오 표기법으로 기준을 제시하고 최악의 경우로 평가 한다. 그리고 시간 복잡도가 괜찮으면 공간 복잡도는 어느정도 봐주는 경향이 있다. time complexity 배열에서 특정 원소를 찾는 경우 O(1) 인덱스로 바로 찾는 경우 int result = numbers[0]; O(n) for 문 한번 돌려서 찾는 경우 for(int num : numbers..