Смотрите нашу статью здесь
Около месяца назад мы опубликовали информацию об использовании инструкций SIMD для ускорения вычислений агрегации.
Во многих комментариях предлагалось реализовать компенсированное суммирование (он же Кахан), поскольку наивный метод может привести к неточным и ненадежным результатам. Вот почему мы потратили некоторое время на интеграцию алгоритмов суммирования Кахана и Ноймайера. В этом посте кратко излагаются некоторые вещи, которые мы узнали в ходе этого путешествия.
Мы думали, что Kahan плохо повлияет на производительность, так как он использует в 4 раза больше операций, чем наивный подход. Однако в некоторых комментариях также предлагалось использовать предварительную выборку и сопрограммы для извлечения данных из оперативной памяти в кэш параллельно с другими инструкциями процессора. Благодаря этим предложениям мы получили феноменальные результаты, причем Кахан суммирует почти так же быстро, как и наивный подход.
Многие из вас также спрашивали, можем ли мы сравнить это с Clickhouse. Поскольку они реализуют суммирование Кахана, мы провели быстрое сравнение. Вот что мы получили, суммировав 1 миллиард дублей с нулями с помощью Kahan algo. Подробности о том, как это было сделано, приведены в сообщении.
База данных запросов: 68 мс Clickhouse: 139 мс
Спасибо за чтение и, пожалуйста, оставьте нам звезду, если вы находите проект интересным!
Сетевой адаптер
Оригинал: “https://dev.to/nicquestdb/how-we-made-our-sql-database-questdb-even-faster-and-more-accurate-4558”