Моя ситуация
Я пишу статью, представляющую программный модуль, который я разработал, и я хочу сравнить его время выполнения с другими модулями для той же задачи. Я знаю о недостатках экспериментов во время выполнения , но, пожалуйста, примите во внимание, что в моем случае это никак не обойти. (Я могу и действительно выводить некоторые свойства теоретически, но этого не достаточно для всего.)
Конкретные сценарии, которые я хочу использовать для сравнительного анализа, имеют два параметра: сложность задачи и случайное начальное число которое определяет подробную проблему. Главным образом я хочу показать зависимость от . Если исходить из предварительных исследований и теории, влияние на время выполнения незначительно или незначительно. На выполнение одной задачи уходит не более десяти минут.
Актуальный вопрос
Я ищу какую-то общепринятую или опубликованную процедуру проведения таких экспериментов или, по крайней мере, список распространенных ошибок (в идеале опубликованных).
Что я нашел до сих пор
Ничего. Поиски в Интернете приводят к разным результатам, но я, возможно, не буду использовать правильную терминологию. Не помогло и включение минимума ключевых слов , который, как я знаю, является хорошим стандартом (см. Ниже).
Как бы я это сделал
Запустите все эксперименты на одном компьютере с потенциально мешающим программным обеспечением, таким как графический интерфейс, по возможности, отключенным.
Подвергните все модули одному и тому же выбору сценариев, т. Е. Одинаковым и .
Для каждого сценария тестируйте различные модули непосредственно друг за другом в случайном порядке. Другими словами, цикл над различными модулями является самым внутренним. Это должно предотвратить смещение различных модулей из-за медленных колебаний производительности машины (например, из-за изменений температуры). Случайный порядок должен избегать смещения из-за таких эффектов, как кэширование или один модуль, который всегда тестируется после одного и того же.
Для каждого возьмите минимальное время выполнения для нескольких сценариев с разными начальными значениями в качестве эталона. Это должно избежать смещения на разных модулях из-за кратковременных колебаний производительности машины, которые делают отдельные работы исключительно плохими.
Ответы:
«Руководство по экспериментальной алгоритмике» К. С. МакГеоха - хороший справочник для
источник
В дополнение к истекшему времени для каждого запуска, укажите количество секунд пользовательского и системного режима, а также общее количество IP-пакетов и общее количество дисковых операций ввода-вывода, хотя бы для того, чтобы убедиться, что некоторые числа последовательно «низки» и оказывают незначительное влияние на истекшее время.
На https://wiki.freebsd.org/BenchmarkAdvice PHK и другие предлагают полезные советы, в том числе
источник