Good job

Submitted by 0xd34df00d on Fri, 01/23/2009 - 05:05

Надоело мне, что LeechCraft::Aggregator подтормаживает при обновлении большого количества фидов, поэтому решено было взять в руки профайлер и пройтись с ним по процессу обновления. Итак, две оптимизации сделали 95% успеха.

Первая - пренебрег принципом минимальности интерфейса и ввел у стораджа функцию для получения полных описаний всех новостей, относящихся к каналу. Раньше этот процесс проходил через получение кратких описаний всех новостей и дальнейшего обхода по списку кратких описаний с получением полных. Эта оптимизация дала где-то 35% прироста.

Вторая.
CREATE INDEX idx_items_parents_hash_title_url ON items (parents_hash, title, url);
Это где-то оставшиеся 60% выигрыша в производительности. Ну да, ценой немного раздувшейся БД (процентов на 15), но, думаю, пользователь переживет.

Теперь процесс обновления фидов легок и незаметен, и лишь легкое шуршание харда напоминает, что у меня уже полгода как SQLite, а не самодельный in-memory недовелосипед.