티스토리 뷰
요즘 수업중에 Perl을 아주 조금 써보고 있는데, Perl의 성능이 궁금해서 찾아보는데, 최근 결과가 별로 없어서 간단한 정규표현식 테스트를 직접해보았습니다. 알파벳과 한글이 같이 있는 문자열에서 알파벳을 알파벳이 아닌 문자를 '_'로 바꾸는 테스트입니다. 정규표현식 문자열 치환 테스트를 하는 이유는 펄에서 정규표현식을 언어수준에서 잘 지윈하고 있기 때문입니다.
CPU Q6600, Memory 4G, Fedora 10 x86_64, Java는 openJDK 1.6 x86_64, Perl은 perl.x86_64 에서 이클립스로 작성후 테스트.
결론부터 말씀드리자면 일단 속도에서는 자바 완승,
메모리는 Perl 완승 입니다.
실제 코드는 다음과 같습니다.
자바
StringBuilder 를 사용해서 문자열을 붙이고 String 클래스의 replaceAll 메소드를 사용해서 치환합니다.
다음은 펄.
. 를 사용해서 문자열을 붙이고, s/ / /g를 사용해서 치환합니다.
펄에서도 미리초를 가져오는 모듈도 있는데, 제가 아직 모듈을 설치할 줄 모르고 귀찮아서 패스...
어쨌거나 문자열을 붙이는 데 걸리는 시간
자바 2.514초
펄 2 초
펄 결과는 초단위므로 비교어려움. 거의 유사한 속도를 보인것으로 보임.
다음은 치환하는데 걸리는 시간.
자바 6.860초
펄 27초
자바가 펄보다 4배 정도 빠름
충격적인 결과. 메모리 사용량(System Monitor를 통해 눈으로 확인)
자바
문자열 생성할 때의 메모리 사용량 650M 정도
문자열 치환할 때의 메모리 사용량 950M 정도
펄
문자열 생성할 때의 메모리 사용량 290M 정도
문자열 치환할 때의 메모리 사용량 389M 정도
자바가 펄보다 2배나 메모리 많이 사용함
...사실 2억자를 파일에 써보니(UTF-8) 400,000,040 bytes 가 되네요. 대략 400메가 정도?
펄이 파일에 기록한 후의 크기보다 적은 메모리를 사용한 다는 것이 인상적이네요. 메모리엔 그냥 정수도 갖고 있어서 그런가...
...
어쨌든 자바가 펄보다 더 빠르긴 하네욥.
트랙백 주신 글이나 댓글을 보면, 펄에서 utf-8 인코딩을 사용하는 방법이나 치환 방법에 문제가 있었습니다.
펄을 잘 모르는 초보자의 성급한 결론이었습니다.
^^;;;;;
CPU Q6600, Memory 4G, Fedora 10 x86_64, Java는 openJDK 1.6 x86_64, Perl은 perl.x86_64 에서 이클립스로 작성후 테스트.
결론부터 말씀드리자면 일단 속도에서는 자바 완승,
메모리는 Perl 완승 입니다.
실제 코드는 다음과 같습니다.
자바
StringBuilder 를 사용해서 문자열을 붙이고 String 클래스의 replaceAll 메소드를 사용해서 치환합니다.
다음은 펄.
. 를 사용해서 문자열을 붙이고, s/ / /g를 사용해서 치환합니다.
펄에서도 미리초를 가져오는 모듈도 있는데, 제가 아직 모듈을 설치할 줄 모르고 귀찮아서 패스...
어쨌거나 문자열을 붙이는 데 걸리는 시간
자바 2.514초
펄 2 초
펄 결과는 초단위므로 비교어려움. 거의 유사한 속도를 보인것으로 보임.
다음은 치환하는데 걸리는 시간.
자바 6.860초
펄 27초
자바가 펄보다 4배 정도 빠름
충격적인 결과. 메모리 사용량(System Monitor를 통해 눈으로 확인)
자바
문자열 생성할 때의 메모리 사용량 650M 정도
문자열 치환할 때의 메모리 사용량 950M 정도
펄
문자열 생성할 때의 메모리 사용량 290M 정도
문자열 치환할 때의 메모리 사용량 389M 정도
자바가 펄보다 2배나 메모리 많이 사용함
...사실 2억자를 파일에 써보니(UTF-8) 400,000,040 bytes 가 되네요. 대략 400메가 정도?
펄이 파일에 기록한 후의 크기보다 적은 메모리를 사용한 다는 것이 인상적이네요. 메모리엔 그냥 정수도 갖고 있어서 그런가...
...
어쨌든 자바가 펄보다 더 빠르긴 하네욥.
트랙백 주신 글이나 댓글을 보면, 펄에서 utf-8 인코딩을 사용하는 방법이나 치환 방법에 문제가 있었습니다.
펄을 잘 모르는 초보자의 성급한 결론이었습니다.
^^;;;;;
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- GMT
- yum update
- Arrays
- subervsion
- 리눅스
- OO3
- userguide
- Eclipse
- Numbering
- 출력드라이버
- JavaMail
- Fedora 9
- tsclient
- 모토로이
- Java
- SimpleDateFormat
- IcedTea6
- OpenJDK6
- 파란 화면을 보았니
- PostgreSQL
- 다음팟인코더
- xml2
- output driver
- pl/java
- Linux
- openoffice
- 병합정렬
- gl2
- Fedora 8
- smplayer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함