Мне нужно проверить часть программы fortran, чтобы понять и количественно оценить влияние конкретных изменений (чтобы сделать код более удобным для обслуживания, мы хотели бы сделать его более OO, воспользовавшись указателями функций для пример).Бенчмаркинг fortran loop
У меня есть цикл, вызывающий несколько раз те же подпрограммы для выполнения вычислений на конечных элементах. Я хочу увидеть влияние использования указателей на функции, а не только жестко закодированных функций.
do i=1,n_of_finite_elements
! Need to benchmark execution time of this code
end do
Что было бы простым способом получить время выполнения такого цикла и отформатировать его в идеальном режиме?
Вы ищете что-то, что профили код или просто грубый выбор времени, сколько времени занимает в целом? Какую ОС и компилятор вы используете? для простого способа проверки вещей вручную см. ['CPU_TIME'] (https://gcc.gnu.org/onlinedocs/gfortran/CPU_005fTIME.html). Также [этот вопрос] (http://scicomp.stackexchange.com/questions/6812/fortran-best-way-to-time-sections-of-your-code) может оказаться полезным. – Gabe
@Gabe Пожалуйста, не используйте 'CPU_TIME'. Он не подходит для измерения времени, особенно в [параллельном программировании] (https://stackoverflow.com/questions/25465101/fortran-parallel-programming). Вместо этого используйте 'SYSTEM_CLOCK'. –
Ну графика в целом, но бенчмаркинг (надеюсь) не только с учетом системного времени. Например, [ruby benchmark] (http://ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html) содержит интересные показатели, такие как пользовательское, системное и общее время, форматирует это в очень хороший дисплей и даже объясняет, какие меры предосторожности следует выполнять при бенчмаркинге. –