Скорость и память¶
Разбор и лемматизация в ruMorph в 6-8 раз быстрее, чем в pymorphy3 с ускорением pymorphy3[fast], и в 31-63 раза быстрее, чем в pymorphy3 без него; inflect и agree - в 15-18 раз. Списки слов разбираются без GIL, поэтому несколько потоков с одним анализатором работают параллельно. Словарь загружается за 5 мс, в 6 раз быстрее, чем в pymorphy3, и занимает в памяти меньше, чем у pymorphy3[fast]; процессы делят словарь, поэтому каждый следующий процесс с анализатором занимает около 1,4 МБ.
Скорость¶
Тысяч слов или разборов в секунду, больше - лучше:
| Операция | ruMorph | pymorphy3 | pymorphy3[fast] |
|---|---|---|---|
Разбор словоформы: analyze в цикле, parse |
629 | 20 | 105 |
Разбор списка: analyze_many |
641 | - | - |
Лемматизация: lemmatize, parse(word)[0].normal_form |
1 391 | 22 | 170 |
Лемматизация в 4 потоках: lemmatize |
4 210 | - | - |
Форма по признакам: inflect(Case="Gen"), inflect({"gent"}) |
1 338 | 76 | 76 |
Согласование с количеством: agree(5), make_agree_with_number(5) |
1 284 | 85 | 85 |
Формы лексемы: forms(), lexeme |
62 | 32 | 32 |
Загрузка и память¶
| ruMorph | pymorphy3 | pymorphy3[fast] | |
|---|---|---|---|
| Импорт и загрузка словаря | 5 мс | 30 мс | 31 мс |
| Прирост памяти процесса | 16,2 МБ | 34,5 МБ | 25,5 МБ |
| Каждый следующий процесс | 1,4 МБ | 32,5 МБ | 23,1 МБ |
Анализаторы с одним файлом словаря в процессе делят словарь. Файл словаря отображается в память, поэтому процессы multiprocessing, joblib или воркеры веб-сервера делят и его: каждый следующий процесс добавляет только собственные таблицы анализатора.
Как измерено¶
- Компьютер - Apple M3 Pro, macOS 26, Python 3.11; ruMorph 0.2.0.dev1, pymorphy3 2.0.6 со словарем pymorphy3-dicts-ru 2.4.417150.4580142;
pymorphy3[fast]- то же с расширением DAWG на C++. - Слова - 128 251 словоформа тестовой части UD_Russian-SynTagRus без знаков препинания, в порядке текста. Время - лучшее из трех прогонов в одном потоке, кроме строки с потоками.
inflect- родительный падеж первых разборов с падежом,agree- первые разборы существительных с числом 5,forms- первые разборы первых 20 000 слов.- Память - прирост резидентной памяти процесса (
ps -o rss) после импорта библиотеки и создания анализатора, время - импорт, создание анализатора и первый разбор. Следующий процесс - прирост памяти, которую процесс не делит с другими (USS), в каждом из четырех процессовmultiprocessingс анализатором.