Практически все работы над этой системой до настоящего времени были посвящены ее функциональности. Система действительно позволяет выполнять некоторые операции параллельно и оптимизирует загрузку почты, первоначально получая только заголовки и кэшируя уже полученную почту, чтобы избежать необходимости повторной ее загрузки. Однако такие параметры, как нагрузка на процессор и потребление памяти вообще никак не исследовались. Вообще, в первую очередь мы стараемся писать функциональный и ясный программный код на языке Python и оставляем решение вопросов производительности на потом, только если в этом возникнет необходимость. С другой стороны, широкий круг пользователей этой программы мог бы взять на себя анализ производительности и поиск путей дальнейшего ее повышения.
Например, полный текст сообщения загружается в кэш только один раз, однако при каждом открытии его для просмотра в памяти создается копия разобранного сообщения. Для больших сообщений это может приводить к потреблению значительных объемов памяти. Снизить потребление памяти можно было бы за счет кэширования уже проанализированных писем, хотя большие письма при этом так и останутся большими, и кэш может храниться в памяти дольше, чем требуется, если не предусмотреть специальных решений. Хранение сообщений или их частей в файлах (возможно в виде объектов, преобразованных в последовательную форму), а не в памяти могло бы сдержать потребление памяти, однако для этого может потребоваться реализовать механизм обработки временных файлов. В данной реализации все сообщения, размещенные в памяти, в конечном итоге будут утилизированы сборщиком мусора Python, как только окна будут закрыты, но действия сборщика мусора могут зависеть от того, где и как мы сохраняем ссылки на объекты. Смотрите также модули gc в стандартной библиотеке, где можно найти указания по управлению выборочной сборкой мусора.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011