Я сравниваю два итерационных метода для обращения случайных квадратных матриц. Поскольку матрицы являются случайными, каждый тестовый пример занимает как разное количество итераций, так и разное затраченное время. Мой вопрос, помимо среднего времени ЦП, является средним значением итераций, взятых обоими методами, полезной информацией для сравнения методов.
performance
benchmarking
srijan
источник
источник
Ответы:
В общем, оба метода сравнения производительности имеют свое место.
Сравнение времени процессора является в некотором смысле наиболее интересной метрикой, потому что в конечном итоге вас действительно интересует, какой из методов быстрее. (Но убедитесь, что критерии завершения сопоставимы; например, оба метода дают приближение с одинаковой точностью). Недостатком является то, что это говорит только о том, какой метод (и, что более важно, какая реализация ) быстрее на машине, на которой вы выполняли тесты. Нет гарантии, что другой компьютер с другой архитектурой или программным обеспечением выберет одного и того же победителя.
С другой стороны, сравнение чисел итераций не зависит от машины, но может ввести в заблуждение, если два метода имеют очень разные итерации - в этом случае метод с меньшим количеством, но более дорогих итераций может быть не предпочтительным (например, методы Ньютона и градиента для оптимизации если вам нужна только очень низкая точность).
Так что, да, имеет смысл дать оба числа [1], и я часто видел это в публикациях. Существует также третий вариант:
[1] Определенно представить статистику по нескольким прогонам; если вы показываете средства, не забудьте также включить стандартные отклонения.
источник
Я считаю, что количество итераций является ошибочной метрикой, поскольку она предполагает «скорость», когда это не так. Простой пример сравнения нескольких различных предварительных кондиционеров, показывающих эту разницу, см. Здесь: http://www.dealii.org/developer/doxygen/deal.II/step_6.html#Possabilitiesforextensions
источник
В случае, если в других ответах неясно, какое количество итераций подходит для аргументов big-O.
Это не подходит для абсолютной скорости, потому что это зависит от среднего времени на одну итерацию, которое может сильно отличаться в разных методах.
Например, существует тенденция игнорировать затраты на вычисление индексов массива, и это вполне может составлять большую долю времени ЦП.
ДОБАВЛЕНО: Кроме того, как я уже указывал в другом месте, для каждого вызова метода обычно есть стоимость установки. Тогда, если матрицы, как правило, не очень велики, эта стоимость установки сама по себе может составлять большую долю процессорного времени (например, удаление из нее будет иметь большую разницу в скорости).
источник