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



Gmail支持IMAP压缩扩展(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 %sn%sn' % (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)。已经有人这么做了吗?这值得吗?

感谢你的反馈。多谢。

我不认为启用压缩会有很大的不同,因为100条消息是一个微小的数据量。假设一条消息是1KB(一条长明文消息),那么您的收件箱是100KB。让我们假设压缩比为5:1(这在最好的情况下是不可能的),因此压缩后的下载现在是20KB。

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

另一方面,启用压缩会损失什么?

相关内容

  • 没有找到相关文章

最新更新