Как мне проверить скорость с помощью PyTest / tox?
Для тестирования алгоритмов / репозиториев машинного обучения я вижу три важные вещи:
- Это сбой
- Минимальная точность теста
- Это достаточно быстро
Хотя (1) и, возможно, (2) - это стандартное модульное тестирование, я не слишком уверен, что делать с (3). Могу ли я проверить это с помощью pytest / tox?
я нашел pytest-benchmark
но как бы это сделать например для lidtk
?
В псевдокоде я хочу сделать следующее:
def classifier_predict(input_features):
# do something smart, but maybe too time-consuming
return result
def input_generator():
# Generate something random which classifier_predict
# can work on - don't measure this time!
return input_features
class Agents(unittest.TestCase):
def test_classifier_predict():
self.assertMaxTime(classifier_predict,
input_generator,
max_time_in_ms=100)
1 ответ
Handcraft-раствор
Вот псевдокод довольно ручного решения:
def classifier_predict(input_features):
# do something smart, but maybe too time-consuming
return result
def input_generator():
# Generate something random which classifier_predict
# can work on - don't measure this time!
return input_features
class Agents(unittest.TestCase):
def test_classifier_predict():
nb_tests = 1000
total_time = 0.0
for _ in range(nb_tests):
input_ = input_generator()
t0 = time.time()
classifier_predict(input_)
t1 = time.time()
total_time += t1 - t0
self.assertLessEqual(total_time / nb_tests, 100)
Недостатки
- Нет хороших графиков (вроде бы pytest-benchmark генерирует)
- Как правило, жесткие ограничения могут быть затруднены из-за разного аппаратного обеспечения, а также из-за разной внешней рабочей нагрузки.