azevaykin b7deb7f0b7 Publish l1_distance & l2_distance | 6 месяцев назад | |
---|---|---|
.. | ||
README.md | b7deb7f0b7 Publish l1_distance & l2_distance | 6 месяцев назад |
l2_distance.cpp | b7deb7f0b7 Publish l1_distance & l2_distance | 6 месяцев назад |
l2_distance.h | b7deb7f0b7 Publish l1_distance & l2_distance | 6 месяцев назад |
ya.make | b7deb7f0b7 Publish l1_distance & l2_distance | 6 месяцев назад |
Данная библиотека содержит две функции L2Distance и L2SqrDistance. Первая вычисляет L2 расстояние между векторами разных типов, а вторая его квадрат. В отличии от наивной реализации, библиотека использует SSE и работает существенно быстрее. Для сравнения можно посмотреть результаты бенчмарка.
Типичное использование - замена кусков кода вроде:
for (int i = 0; i < len; i++)
dist += (a[i] - b[i]) * (a[i] - b[i]);
на существенно более эффективный вызов L2SqrDistance(a, b, len)
.
Работает для типов i8, ui8, i32, ui32, float, double.