Как вы тестируете реализацию Hyperloglog?
Существует так много реализаций Hyperloglog, но как проверить / протестировать реализацию Hyperloglog? Чтобы проверить это "точность", это поведение, связанное с ошибкой? Просто бросить несколько статических тестовых случаев выглядит очень неэффективно.
Более конкретно, кто-то меняет процедуру случайных чисел, откуда мне знать, что это не катастрофический выбор, и показать это с помощью некоторых автоматических повторяющихся тестов?
Может кто-нибудь указать мне на какие-нибудь известные хорошие тесты в github или другом месте, и могут быть некоторые объяснения?
1 ответ
Хороший вопрос. Во-первых, обратите внимание, что, хотя теоретическая основа HyperLogLog дает некоторое представление о точности, крайне важно протестировать реализацию, которую вы используете.
При тестировании должны использоваться случайные наборы данных (также возможны дополнительные статические наборы данных), и их следует применять для разных наборов элементов. Если у вас есть какая-либо инфраструктура автоматизации тестирования, это было бы естественным способом избежать регрессии, как вы предложили выше. Тем не менее, обратите внимание, что для измерения точности с большим количеством элементов время выполнения теста может быть чрезмерным.
Вы можете использовать реализацию ниже для справки. Он включает в себя модульные тесты, которые рисуют большое количество случайных чисел и проверяют точность через фиксированные интервалы.