Тесты поисковой утилиты
FAIND
Тесты инструментов разработки
Тесты поисковой утилиты FAIND
Эффективность любого поискового движка (и для локального поиска, и для серверного режима работы) включает в себя как минимум три фактора:
скорость создания индекса
объем получающейся индексной базы данных на диске
скорость поиска по ключевым словам
Разрабатывая поисковый движок φaind, мы уделяем особое внимание его гибкости - возможности в одних случаях создавать минимальный по объему индекс, в других - добиваться максимальной скорости поиска, в третьих - наиболее качественного поиска. Различные режимы работы поискового движка переключаются опциями командной строки (описание дано в руководстве пользователя), благодаря чему прикладной программист (или пользователь поисковой системы) может всегда выбирать наиболее подходящий ему режим работы. В нижеприведенных таблица мы постарались дать ряд "полярных" оценок для разных режимов работы поискового движка.
В таблице сведены значение времени, затраченного на индексирование подборки текстов на жестком диске, объема получающейся индексной базы данных и количества собранных ключевых слов (для версии 0.98). Во всех случаях запускалась консольная утилита для поиска текста φaind (версия для для MS Windows), скомпилированная с максимальной оптимизацией под процессор Intel Pentium 4 транслятором MS VisualStudio 2003, с однопоточными версиями runtime библиотек.
Подборка текстов | простая индексация, быстрый поиск только для слов, без морфологии |
компактный индекс (-index wordforms) |
самый компактный индекс (сложная морфология) (-index dynforms) |
быстрый поиск для фраз (-index wordforms -index proximity) |
---|---|---|---|---|
художественная литература на русском языке, 4286 файлов HTML, 550 Mb |
затрачено
592
сек |
затрачено 593
сек индекс 36 761 Kb 762 660 кл. слов |
затрачено 651
сек индекс 30 970 Kb 593 096 кл. слов |
|
художественная литература на английском языке, 563 файла HTML, 582 Mb | затрачено 310
сек индекс 7 888 Kb 176 019 кл. слов |
затрачено 317
сек индекс 6 992 Kb 141 219 кл. слов |
Эффективность поискового движка в очень большой степени зависит от используемого компилятора, причем заранее предсказать, насколько хорош окажется тот или иной компилятор, невозможно. Далее приводится таблица, в которую сведены результаты использования разных компиляторов для создания исполнимого файла поисковой утилиты faind-lite и для индексации набора текстов:
MSVC 2003 |
Intel C++ 9.0 |
Borland CBuilder 6.0 |
|
---|---|---|---|
размер exe, байт |
1 077 248 |
4 812 800 |
2 367 488 |
время индексации группы текстов, сек |
686 |
817 |
891 |
Поиск единственного слова "корабль" выполнялся на подборке HTML-документов (4286 файлов, 591 822 Кб). Общее время поиска - 399 секунд. Индексирование не применялось.
Программа Ygres - компилятор словаря поискового движка - подробно описана здесь. Для нее характерно практически полное отсутствие вычислений с плавающей точкой и большая нагрузка на CRT процедуры работы с динамической кучей (в основном связанная с выделением и освобождением небольших кусков памяти). Большое количество операций с короткими строками (средняя длина около 5-7 символов wchar_t) позволяет предположить, что применение loop unrolling повысит производительность кода. Однако практика показывает, что оптимизация - процесс неоднозначный, и небольшой выигрыш в скорости может утонуть в возросшем в разы объеме исполняемого кода (который, вероятно, приводит к возрастанию количества промахов кэша команд и данных).
Программа компилировалась с максимально возможной для каждого транслятора оптимизацией, гарантирующей работу без сбоев. Результаты прогонов для релиза 0.82 приведены в таблице:
MSVC 2003 |
Intel C++ 9.0 |
Borland C++ Builder 6.0 |
|
---|---|---|---|
время компиляции словаря, сек |
244 |
241 |
505 |
размер исполнимого модуля, байт |
847 872 |
4 841 472 |
2 890 752 |
1. Испытания велись на одной машине с CPU Pentium-4 2.8 ГГц, материнская плата на чипсете Intel 865, двухканальная память DDR-400 объемом 2 Гб. Размер оперативной памяти позволил всем программам работать с данными без свопинга, поэтому производительность дисковой подсистемы особой роли не играет.
последние изменения 16.05.2007
© Козиев Илья 2019