Я использую оптимизированную версию алгоритма Левенштейна в некотором поисковом коде, который я строю. У меня есть функциональные модульные тесты, чтобы проверить, что алгоритм возвращает правильные результаты, но в этом контексте производительность алгоритма также чрезвычайно важна.
Я хочу добавить некоторое покрытие для тестирования проекта, чтобы, если какие-либо будущие изменения влияют на оптимизацию, они будут отображаться как неудачные тесты - поскольку алгоритм детерминирован и работает против известных тестовых данных, это может быть как подробно подсчитывается количество команд, выполненных для заданного набора тестовых входов. Другими словами, я не хочу измерять производительность алгоритма с помощью таймеров. Я заинтересован в фактическом тестировании внутреннего поведения алгоритма, а не только на выходе.
Любые идеи о том, как я буду обращаться к этому в С#/.NET 4?
EDIT: причина, по которой я не хочу просто использовать часы настенных часов, заключается в том, что она будет отличаться от нагрузки процессора и других факторов вне контроля теста. Это может привести к ошибкам, которые возникают, например, когда сервер сборки находится под нагрузкой. В рамках развернутой системы будет выполняться мониторинг настенных часов.
РЕДАКТИРОВАТЬ 2: Подумайте об этом так: как вы примените red- > green- > refactor, когда производительность является критическим требованием?