#julia #benchmarking
Вопрос:
function1(args; kwargs)
и function2(args; kwargs)
являются двумя функциями, которые при одном и том же вводе возвращают один и тот же вывод. Я хотел бы проверить, что function1
это быстрее, чем function2
. Выполнение обеих этих функций занимает очень много времени (10 минут). Я пробовал использовать @btime
, но это, кажется, занимает целую вечность. Я предполагаю, что он запускает эту функцию тысячи раз. Меня не слишком волнует, насколько точен средний показатель, так как же я могу сравнить функции всего с 1 или 2 запусками?
Ответ №1:
@btime
в значительной степени это позволяет решить две проблемы при сравнительном анализе: накладные расходы на компиляцию и случайный шум, вызванный другими процессами в вашей системе, которые могут привести к замедлению работы функции по причинам, не связанным с фактическим выполняемым машинным кодом.
В вашем случае, похоже, ни то, ни другое не вызывает особого беспокойства просто потому, что время выполнения функции слишком велико. Вы можете позаботиться о накладных расходах на компиляцию, просто запустив обе функции один раз, прежде чем синхронизировать их, и случайный системный шум, скорее всего, выровняется в течение длительного времени выполнения ваших функций.
Если вы хотите использовать BenchmarkTools, ознакомьтесь samples
с evals
ключевыми @benchmark
словами и, описанными в руководстве здесь: https://juliaci.github.io/BenchmarkTools.jl/stable/manual/#Benchmark-Parameters