Функция бенчмаркинга, которая занимает много времени

#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