Как вы тестируете реализацию Hyperloglog?

Существует так много реализаций Hyperloglog, но как проверить / протестировать реализацию Hyperloglog? Чтобы проверить это "точность", это поведение, связанное с ошибкой? Просто бросить несколько статических тестовых случаев выглядит очень неэффективно.

Более конкретно, кто-то меняет процедуру случайных чисел, откуда мне знать, что это не катастрофический выбор, и показать это с помощью некоторых автоматических повторяющихся тестов?

Может кто-нибудь указать мне на какие-нибудь известные хорошие тесты в github или другом месте, и могут быть некоторые объяснения?

1 ответ

Хороший вопрос. Во-первых, обратите внимание, что, хотя теоретическая основа HyperLogLog дает некоторое представление о точности, крайне важно протестировать реализацию, которую вы используете.

При тестировании должны использоваться случайные наборы данных (также возможны дополнительные статические наборы данных), и их следует применять для разных наборов элементов. Если у вас есть какая-либо инфраструктура автоматизации тестирования, это было бы естественным способом избежать регрессии, как вы предложили выше. Тем не менее, обратите внимание, что для измерения точности с большим количеством элементов время выполнения теста может быть чрезмерным.

Вы можете использовать реализацию ниже для справки. Он включает в себя модульные тесты, которые рисуют большое количество случайных чисел и проверяют точность через фиксированные интервалы.

https://github.com/Microsoft/CardinalityEstimation

Другие вопросы по тегам