Бенчмарки поискового движка

 

Тесты поисковой утилиты 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 сек
индекс 51 763 Kb
1 032 998
кл. слов

затрачено 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

Программа 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

  © Mental Computing 2010