是否值得使用IMAP COMPRESS(DEFLATE)?

时间:2011-09-12 10:12:14

标签: python imap javamail imaplib gmail-imap

Gmail支持IMAP COMPRESS扩展程序(RFC4978),特别是DEFLATE algorithmRFC1951)又名zlib / gzip。

我通常不是Python程序员,但我使用Piers Lauder's 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个消息的单个收件箱访问可能需要4到17秒之间)。一致的结果将使我的决定更容易!通过SSL访问我认为可能存在一些固有的压缩(我不知道)。

您认为在访问Gmail IMAP时使用压缩是否值得?

顺便说一句,我想使用JavaMail(而不是Python),但我知道我需要显着定制JavaMail以支持压缩(可能使用Jessie)。有人这样做了吗?它值得吗?

我很感激反馈。非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为启用压缩不会产生很大的影响,因为100条消息是 tiny 数据量。假设一条消息是1KB(长文本消息),那么您的收件箱是100KB。假设压缩率为5:1(最好不大可能),因此压缩下载现在为20KB。

如今,任何理智的互联网连接至少以1Mbps或125KB / s的速度运行。因此,在这些高估的假设下,你可以节省一些数据传输成本。这与连接延迟和gmail方面的处理相形见绌。

另一方面,通过启用压缩你会失去什么?