![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Начал что-то Thunderbird тормозить, ВНЕЗАПНО. И при запуске и при открытии емылов, особенно если с аттачами - то вообще виснет намертво. И место на диске, где он живет, закончилось ни с того не сего.
Начал разбираться. Ну 10000 комментов чуть более чем за полгода из ЖЖ это хрен с ним, 100-150 мег, не страшно. Ну психи-клиенты присылающие в аттачах неупакованные логи - еще мег 100. А потом смотрю - лежит файло mimeTypes.rdf, xml размером в 200 мег(!). И в нем один тэг занимает 99% всего файла, а содержимое его - строка составленая из несчетного количества повторяющихся строк-путей к папке thunderbird.
Короче, как я понял, сначала у него заклинило в голове при заполнении этого файла и он туда запилил 200 мег конкатенированных строк, а потом каждый раз при попытке анализировать этот файл читал его _посимвольно_ и парсил.
Ключевой аспект - забили на кэширование чтения файла. Не знаю, что за дырявые абстракции в алгоритмах кэша винды, но если поверх них добавить свой кэш, например читать из файла кусками по мегабайту, а потом уже в памяти анализировать - скорость отличается реально на порядки, 5 часов vs 15 минут, например, для файла с хитрожопыми бинарными объектами.
Начал разбираться. Ну 10000 комментов чуть более чем за полгода из ЖЖ это хрен с ним, 100-150 мег, не страшно. Ну психи-клиенты присылающие в аттачах неупакованные логи - еще мег 100. А потом смотрю - лежит файло mimeTypes.rdf, xml размером в 200 мег(!). И в нем один тэг занимает 99% всего файла, а содержимое его - строка составленая из несчетного количества повторяющихся строк-путей к папке thunderbird.
Короче, как я понял, сначала у него заклинило в голове при заполнении этого файла и он туда запилил 200 мег конкатенированных строк, а потом каждый раз при попытке анализировать этот файл читал его _посимвольно_ и парсил.
Ключевой аспект - забили на кэширование чтения файла. Не знаю, что за дырявые абстракции в алгоритмах кэша винды, но если поверх них добавить свой кэш, например читать из файла кусками по мегабайту, а потом уже в памяти анализировать - скорость отличается реально на порядки, 5 часов vs 15 минут, например, для файла с хитрожопыми бинарными объектами.
no subject
Date: 2010-02-03 12:51 am (UTC)