Есть ли какой-нибудь стандарт для сравнения времени выполнения экспериментально?

10

Моя ситуация

Я пишу статью, представляющую программный модуль, который я разработал, и я хочу сравнить его время выполнения с другими модулями для той же задачи. Я знаю о недостатках экспериментов во время выполнения , но, пожалуйста, примите во внимание, что в моем случае это никак не обойти. (Я могу и действительно выводить некоторые свойства теоретически, но этого не достаточно для всего.)

Конкретные сценарии, которые я хочу использовать для сравнительного анализа, имеют два параметра: сложность  задачи и случайное начальное число  которое определяет подробную проблему. Главным образом я хочу показать зависимость от  . Если исходить из предварительных исследований и теории, влияние на время выполнения незначительно или незначительно. На выполнение одной задачи уходит не более десяти минут.NрNр

Актуальный вопрос

Я ищу какую-то общепринятую или опубликованную процедуру проведения таких экспериментов или, по крайней мере, список распространенных ошибок (в идеале опубликованных).

Что я нашел до сих пор

Ничего. Поиски в Интернете приводят к разным результатам, но я, возможно, не буду использовать правильную терминологию. Не помогло и включение минимума ключевых слов , который, как я знаю, является хорошим стандартом (см. Ниже).

Как бы я это сделал

  • Запустите все эксперименты на одном компьютере с потенциально мешающим программным обеспечением, таким как графический интерфейс, по возможности, отключенным.

  • Подвергните все модули одному и тому же выбору сценариев, т. Е. Одинаковым и  .Nр

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

  • Для каждого возьмите минимальное время выполнения для нескольких сценариев с разными начальными значениями в качестве эталона. Это должно избежать смещения на разных модулях из-за кратковременных колебаний производительности машины, которые делают отдельные работы исключительно плохими.N

Wrzlprmft
источник
Это может помочь объяснить ваши рассуждения, почему вы думаете, что «в моем случае нет другого пути». Но, конечно, вероятно, как отдельный вопрос и ссылка там, потому что этот вопрос достаточно хорошо сфокусирован.
Апиват Чантавибул
@Billiska: Я не совсем уверен, что вы хотите, чтобы я сделал. Почему я должен объяснять свои аргументы в пользу экспериментального подхода в отдельном вопросе? У меня нет вопросов по этому поводу.
Wrzlprmft
Я должен не согласиться с тем, что вы принимаете минимальное время выполнения повторного эксперимента. Вы, кажется, думаете, что там может быть только верхний план. Может ли быть также возможно иметь контур вниз? Более типично рассматривать несколько статистических данных одновременно, например, среднее значение, медиана, макс. Кто знает, что они могут показать то, чего вы не ожидали. В конце концов, это эмпирический эксперимент.
Апиват Чантавибул
2
Это очень широко; по этой теме можно написать книги, например, «Руководство по экспериментальной алгоритмике» МакГеоха. Можно даже сказать, что вы спрашиваете: «Есть ли какой-то стандарт для науки?». Так что я не уверен, что это разумно ограничено. У вас есть более конкретные вопросы?
Рафаэль

Ответы:

2

«Руководство по экспериментальной алгоритмике» К. С. МакГеоха - хороший справочник для

  • как ставить эксперименты на алгоритмах,
  • как интерпретировать и использовать результаты, и
  • как итерировать к более значимым результатам, если это необходимо.
Рафаэль
источник
2

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

На https://wiki.freebsd.org/BenchmarkAdvice PHK и другие предлагают полезные советы, в том числе

Используйте министат, чтобы увидеть, значат ли ваши цифры. Подумайте о покупке "Мультипликационного справочника по статистике"

J_H
источник