메일이 52,630통 정도 되는 INBOX가 있다.
개별 메일의 사이즈는 945bytes 정도 된다.
자바메일로 folder size를 요청하면 대략 1분 정도가 소요된다.
하지만 펄로 folder size를 요청하면 4~5초 정도가 소요된다.
둘의 차이는?
당연히 라이브러리에서 IMAP Query 차이가 자바가 느리게 실행된 이유다.
먼저 펄에서 날린 쿼리를 보자.
1 LOGIN username password
2 EXAMINE INBOX
3 UID SEARCH ALL
4 UID FETCH 145,147:183,186,190:194,197:244,251:253,256:52785,52806:52810 (RFC822.SIZE)
다음으로 자바에서 날린 쿼리를 보자.
A1 LOGIN username password
A2 CAPABILITY
A3 LIST “” INBOX
A4 EXAMINE INBOX
A5 FETCH 1 (ENVELOPE INTERNALDATE RFC822.SIZE)
A6 FETCH 2 (ENVELOPE INTERNALDATE RFC822.SIZE)
A7 FETCH 3 (ENVELOPE INTERNALDATE RFC822.SIZE)
…
…
A52640 FETCH 52810 (ENVELOPE INTERNALDATE RFC822.SIZE)
[차이점 1]
FETCH명령을 사용하는 방법이 다르다.
펄은 연속된 UID는 147:183 이런식으로 쿼리를 사용했지만,
자바는 UID 마다 각각의 쿼리를 날렸다.
[차이점 2]
FETCH 명령을 쓸 때 옵션이 다르다.
펄에서는 RFC822.SIZE만 쓴 반면에 자바에서는 ENVELOPE INTERNALDATE까지 썼다.
사이즈만 계산하는데 굳이 ENVELOPE INTERNALDATE를 붙일 필요가 없다.
[결론]
1. 자체 라이브러리를 만들어야 한다.
2. 자바메일은 잘못된 IMAP Query 방법 때문에 서버의 불필요한 IO만 증가 시켜서 처리 속도를 느리게 했다.
끝