2

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を使用)。誰かがすでにこれを行っていますか?それは価値があるでしょうか?

フィードバックに感謝します。どうもありがとう。

4

1 に答える 1

0

圧縮を有効にしても大きな違いはないと思います。単純に 100 メッセージはごくわずかなデータ量だからです。1 つのメッセージが 1 KB (長いプレーンテキスト メッセージ) であると仮定すると、受信ボックスは 100 KB になります。圧縮率が 5:1 であると仮定しましょう (これはせいぜいありそうにありません)。したがって、圧縮されたダウンロードは 20KB になります。

最近の正常なインターネット接続は、少なくとも 1Mbps または 125KB/s で動作します。したがって、これらの過大評価された仮定の下では、1 秒未満のデータ転送コストを節約できます。これは、接続の遅延と gmail 側の処理によって小さくなっています。

一方、圧縮を有効にすることで失われるものは何ですか?

于 2011-09-12T11:11:18.263 に答える