Gmail は IMAP COMPRESS 拡張機能 ( RFC4978 )、具体的にはDEFLATE アルゴリズム( RFC1951 ) 別名 zlib/gzip をサポートしています。
私は通常 Python プログラマーではありませんが、Piers Lauder の imaplib2を使用して簡単なテスト スクリプトを一緒に投げ、圧縮を有効にした場合と無効にした場合のパフォーマンスを判断しました。
from time import time
import imaplib2, string
def cb((response, cb_arg, error)):
typ, data = response
#print 'Message %s\n%s\n' % (cb_arg, data[0][5])
IMAP_SERVER='imap.gmail.com'
IMAP_PORT=993
IMAP_USERNAME='*********'
IMAP_PASSWORD='*********'
def gogmail(compress):
start = time()
M = imaplib2.IMAP4_SSL(IMAP_SERVER, IMAP_PORT, debug=0)
M.login(IMAP_USERNAME, IMAP_PASSWORD)
if(compress):
M.enable_compression()
M.SELECT(readonly=True)
typ, data = M.SEARCH(None, 'ALL')
fetch_list = string.split(data[0])[-100:]
for num in fetch_list:
M.FETCH(num, '(RFC822)', callback=cb, cb_arg=num)
M.LOGOUT()
end = time()
print end - start
print 'Compressed '
print '------------'
for x in range(0, 50):
gogmail(1)
print 'Uncompressed'
print '------------'
for x in range(0, 50):
gogmail(0)
Python コードで明らかな初心者向けエラーを作成した場合は、修正してください。
このテスト スクリプトを数回実行しました。圧縮されたアクセスの平均がより速い場合もあれば、そうでない場合もあります。平均に大きな差はなく、アクセス時間には大きなばらつきがあります (100 メッセージの受信ボックスへの 1 回のアクセスに 4 ~ 17 秒かかる場合があります)。一貫した結果は、私の決定を容易にするでしょう! アクセスは SSL 経由で行われます。これには固有の圧縮があるのではないかと考えていました (わかりません)。
Gmail IMAP にアクセスするときに圧縮を使用する価値があると思いますか?
ちなみに、(Python ではなく) JavaMail を使用したいのですが、圧縮をサポートするために JavaMail を大幅にカスタマイズする必要があることを理解しています (おそらくJessieを使用)。誰かがすでにこれを行っていますか?それは価値があるでしょうか?
フィードバックに感謝します。どうもありがとう。