🤖
LifeEXE
Udemy курс UE / C++ PatreonBoostyTelegramYouTube
  • 🤍Welcome
  • 💡Мои курсы
    • 🎮Unreal Engine — полное руководство по разработке на С++
    • 🧪Автоматизация и тестирование в Unreal Engine
    • 🐍Snake game
    • 🔊Metasounds
    • 🏗️Design patterns
    • 🕹️Game Engine hardCORE series
    • 🧠OpenAI
  • 🔗Сообщество
    • Ресуры
    • Поддержать проект
    • Проекты участников сообщества
    • Code review участников сообщества
  • 📚Образовательные ресурсы
    • Книги
      • C++
      • ООП
      • Чистый код
      • Компьютерная графика
      • Алгоритмы и структуры данных
      • Дизайн и проектирование
      • Виртуальная реальность
      • Процедурная графика
      • Функциональное программирование
      • Менеджмент проектов
      • Фундаментальное
      • Тестирование
      • Разное
    • Online
      • Unreal Engine
      • C++
      • Компьютерная графика
      • Чистый код
      • AI
      • Разное
    • Статьи
      • Code / C++
  • 👨‍💻Software
    • IDE
      • VS hotkeys
    • Unreal Engine
    • GIT
    • CI/CD
    • Tools
      • С++
      • Компьютерная графика
      • UI / UX
      • Animations
      • GameDev
      • Unreal Engine
      • Creative coding
      • Sound
      • Документация
      • Статический анализ кода
      • Тестирование
      • Автоматизация
      • Network
      • CV / ML
      • Profiling
      • Fonts
      • UML / diagrams
      • Разное
    • Free assets
  • 💾Code
    • Code style
      • .clang-format
      • .gitignore
      • UE code style
      • Code style проектов LifeEXE
    • C++
      • Const correctness
      • Использование auto
      • Lambda выражения
      • Forward declaration
      • Measure execution time
      • Immediately Invoked Lambda Expression (IILE)
    • Unreal Engine
      • Медленный ли Cast
      • UE_LOGFMT
  • ⁉️FAQ
    • Часто задаваемые вопросы
Powered by GitBook
On this page
  • CPP
  • Unreal Engine

Was this helpful?

  1. Code
  2. C++

Measure execution time

CPP

#include <string>
#include <chrono>
#include <iostream>

namespace ch = std::chrono;

class ScopeTimer final {
public:
    ScopeTimer(const std::string& name)
        : m_name(name), m_start(ch::high_resolution_clock::now()) {
        std::cout << m_name << " start" << std::endl;
    }

    ~ScopeTimer() {
        const auto end = ch::high_resolution_clock::now();
        const auto duration = ch::duration_cast<ch::milliseconds>(end - m_start).count();
        std::cout << m_name << " end, duration: " << duration << " ms" << std::endl;
    }

private:
    const std::string m_name;
    const ch::high_resolution_clock::time_point m_start;
};

#define SCOPE_TIMER(name) ScopeTimer timer##__LINE__(name)

int fibonacci(int n) {
    return n <= 1 ? n : fibonacci(n - 1) + fibonacci(n - 2);
}

int main()
{
    {
        SCOPE_TIMER("fibonacci_10");
        fibonacci(10);
    }

    {
        SCOPE_TIMER("fibonacci_30");
        fibonacci(30);
    }

    {
        SCOPE_TIMER("fibonacci_40");
        fibonacci(40);
    }

    {
        SCOPE_TIMER("fibonacci_50");
        fibonacci(50);
    }

    return 0;
}

Время в Output будет зависеть от вашего CPU:

fibonacci_10 start
fibonacci_10 end, duration: 0 ms
fibonacci_30 start
fibonacci_30 end, duration: 5 ms
fibonacci_40 start
fibonacci_40 end, duration: 622 ms
fibonacci_50 start
fibonacci_50 end, duration: 85770 ms

Unreal Engine

SCOPE_LOG_TIME(Name, CumulativePtr)

SCOPE_LOG_TIME_IN_SECONDS(Name, CumulativePtr)

SCOPE_LOG_TIME_FUNC()

SCOPE_LOG_TIME_FUNC_WITH_GLOBAL(CumulativePtr)

...
PreviousForward declarationNextImmediately Invoked Lambda Expression (IILE)

Last updated 1 year ago

Was this helpful?

💾
LogoStats System Overview