Принципы оптимизации
Как известно, пользователи программных продуктов хотят чтобы эти самые продукты занимали как можно меньше места, работали безошибочно и как можно быстрее. Но, как знают разработчики, иногда приходится жертвовать одним качеством для достижения максимальной выгоды в другом месте.
Например, уменьшение размера приложения, работающего с локальной базой данных, может быть достигнуто за счет упаковки-распаковки данных на лету или за счет вычисления значений полей на лету вместо хранения этих данных в базе. Но этот подход уменьшает производительность системы за счет того, что процессору требуется время на упаковку-распаковку или на вычисление значений столбцов. И чем больше мы будем стараться уменьшить размер приложения, тем медленнее в конечном итоге будет работать программа.
Если же мы хотим добиться максимальной производительности, то необходимо хранить все заранее вычисленные значения в базу данных, так что в дальнейшем их извлечение будет занимать намного меньше времени, чем их вычисление. Естественно, что у этого подхода есть и свой минус - размер базы данных растет пропорционально количеству хранимых данных.
В настоящий момент база данных моего синонимайзера содержит таблицы слов и синонимов, и занимает 125 мегабайт. Я решил добавить еще несколько таблиц, которые будут содержать:
- все формы имен существительных (по числам и падежам)
- все формы имен прилагательных (по числам, падежам и родам)
Кроме того, я дополню таблицу слов одним полем, которое будет содержать информацию о наличии у слова нужной падежной формы. Это позволит уменьшить время на поиск слов в таблице за счет отсеивания тех слов, для которых заведомо нет никаких форм.
О результатах произведенных действий я расскажу в следующем посте.



Последние комментарии