얼마전 다른 개발자가 작성한 코드를 보다가 array 복사를 for loop 문을 이용해서 하는 것을 보았습니다. 물론, 별 생각 없이 써도 무방한 코드입니다.
int[] src = {1, 2, 3, 4, 5}; int[] dest = new int[src.length]; for(int i = 0 ; i < src.length ; i++){ dest[i] = src[i]; }
하지만, 복사해야 하는 array의 사이즈가 1000, 10000으로 커진다면 어떻게 될까요? 과연 성능이 잘 나올까요?
이런 경우, 사용할 수 있는 간단한 API가
java.lang.System.arraycopy(Object src, int src_position, Object dst, int dst_position, int length);
입니다.
System.arraycopy의 경우, jni로 구현되어 있어, 메모리를 직접 접근하여 복사하므로, 성능 면에서 월등합니다.
샘플 코드
int[] src = {1, 2, 3, 4, 5}; int[] dest = new int[src.length]; System.arraycopy(src, 0, dest, 0, src.length);
단, object array의 경우, 그 refernce가 복사되므로, 복사된 array는 기존의 object를 그대로 가리키고 있습니다. 만약, 새로운 object로 복사하여야 하는 경우는, for loop문을 이용하여,개별 object를 복사하여야 합니다.
'시즌1 > Java Tips' 카테고리의 다른 글
[Java Tips] 날짜 비교하는 법 (0) | 2009.10.21 |
---|---|
[Java Tips] 현재 작업 디렉토리 얻어오기 (1) | 2009.10.21 |
[Java Tips] ArrayList를 array로 변환하는 방법 (1) | 2009.10.20 |
[Java Tips] 자바 프로그램 메모리 사용량 보기 (0) | 2009.10.20 |
[Java Tips] NullPointerException을 피하는 String 비교 구문 (1) | 2009.10.20 |