Сравнение производительности
Сравнительное тестирование производительности двух морфологических анализаторов русского языка, pymorphy3(популярная Python-библиотека) и libmorph/pyrusmorph, проводилось на реальном текстовом файле объёмом 311 775 слов.
Исходный код написанных deepseek под кальку программ измерения производительности: pymorphy3-speed.py и pyrusmorph-speed.py.
В коде умышленно не принимаются во внимание однобуквенные слова, так как в русском языке их, как известно, девять – а, б, в, и, к, о, с, у и я, но они очень высокочастотные, и производительность pymoprhy3 сильно проседает, почти вдвое. На производительность libmorph/pyrusmorph же они практически не влияют (10%).
pymorphy3
pyrusmorph
📋 Методика тестирования
Тестирование проводилось на идентичном текстовом файле смешанной тематики, содержащем 311 775 слов, из который большинство – русские, однако встречаются также англицизмы, цифры и аббревиатура.
Условия проведения теста:
- Однопоточный режим
- Слова обрабатываются последовательно
- На слова текст разбивается предварительно
- Оба анализатора используют свои словари по умолчанию
Команды для запуска тестов:
pymorphy3:
$ python ./pymorphy3-speed.py
--- Старт обработки 311775 слов...
------------------------------
Затраченное время: 12.8445сек
Общее количество слов: 311775
Опознано слов: 278519 (89.3%)
Скорость: 24273 слов/сек
pyrusmorph (libmorph):
$ python ./pyrusmorph-speed.py
--- Старт обработки 311775 слов...
------------------------------
Затраченное время: 0.5466 сек
Общее количество слов: 311775
Опознано слов: 278221 (89.2%)
Скорость: 570418 слов/сек
🔗 Исходные коды тестов
- pymorphy3-speed.py — скрипт для тестирования pymorphy3
- pyrusmorph-speed.py — скрипт для тестирования libmorph/pyrusmorph
- sample.txt.gz — тестовый корпус (311 775 слов)
⚡ Примечание: Тесты проводились на процессоре Intel Core Ultra 7 155H @ 4.5 GHz. Абсолютные значения могут отличаться в зависимости от аппаратного обеспечения, но соотношение скоростей сохраняется.