Токенизацию в пайплайне обычно не трогают — болото Шрэка. Да и по моему опыту на собесах ее тоже так лишь интеллектуально ласкают. Но как говорится "идите туда, где страшно, :)".
Узкое место у хф и тиктокенов: regex (еще одно страшное место). Претокенизация через регулярки — около 50 МБ/с. Ручной автомат с таблицей переходов даёт сразу 10–20×. Дальше помогает байтовая арифметика без ветвлений и второй курсор по буферу: однопоток упирается не в CPU, а в цепочку зависимостей на токен.
Частые слова тоже решают многое. Уникальных претокенов мало, кэш закрывает почти все обращения, а 90% слов — один токен, так что ответ можно хранить прямо в кэше. Красивые схемы без ветвлений часто проигрывают: упираются в память. Многопоточность тоже не даёт честного ×16 — из-за сборки и memcpy по Амдалу выходит скорее ×3–4.
На триллионах токенов и оффлайн обработке даст еще пару часов (или суток) на эксперименты :^)
Post #25
567


