
Пётр Портнов
Ozon
Одна из задач среднего поиска в Ozon — применять разнообразные сложные вычисления к документам, пережившим базовое ранжирование, рассчитывая сложные фичи (факторы), влияющие на позицию документов в выдаче. Среди этих вычислений большую роль как по значимости, так и по потребляемому CPU играют calculated-фичи — разнообразные формулы, описанные дата-саентистами.
В ходе исследования производительности мы заметили, что расчет calculated-фичей занимает неприемлемо много процессорного времени, и решили оптимизировать их за счет динамической генерации байт-кода для них. В результате удалось почти втрое уменьшить потребление CPU, а заодно снизить время ответа на пользовательские запросы и фактическую интенсивность аллокаций.
Мы не только посмотрим на то, как удалось реализовать этот механизм, но и на способы более глубокого изучения работы JIT-компилятора в JVM, а также подходы к дальнейшему улучшению производительности компилятора формул.
Ozon