Стоит ли использовать IMAP COMPRESS (DEFLATE)? - PullRequest
2 голосов
/ 12 сентября 2011

Gmail поддерживает расширение IMAP COMPRESS ( RFC4978 ), в частности алгоритм DEFLATE ( RFC1951 ) aka zlib / gzip.

Обычно я не программист на Python, но я написал сценарий быстрого тестирования, используя 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 голосов
/ 12 сентября 2011

Я не думаю, что включение сжатия будет иметь большое значение просто потому, что 100 сообщений - это крошечный объем данных.Предположим, что одно сообщение имеет размер 1 КБ (длинное текстовое сообщение), поэтому входящие сообщения имеют размер 100 КБ.Давайте предположим, что степень сжатия составляет 5: 1 (что в лучшем случае маловероятно), поэтому сжатая загрузка теперь составляет 20 КБ.

Любое нормальное подключение к Интернету в наши дни работает со скоростью не менее 1 Мбит / с, или 125 КБ / с.Таким образом, при этих завышенных допущениях вы сэкономите где-то меньше секунды затрат на передачу данных.Это затмевается задержкой соединения и обработкой на стороне gmail.

С другой стороны, что вы теряете, включив сжатие?

...