diff --git a/libs/cpp-utils/debug.h b/libs/cpp-utils/debug.h new file mode 100644 index 0000000..238262a --- /dev/null +++ b/libs/cpp-utils/debug.h @@ -0,0 +1,44 @@ +/* + * Mirai. Copyright (C) 2024 Vyn + * This file is licensed under version 3 of the GNU General Public License (GPL-3.0-only) + * The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt + */ + +#ifndef CPP_UTILS_DEBUG_H +#define CPP_UTILS_DEBUG_H + +#include +#include +#include +#include +#include + +namespace cpputils::debug +{ + +class Timer +{ + public: + Timer() : startTime(std::chrono::high_resolution_clock::now()) + { + } + + void start() + { + startTime = std::chrono::high_resolution_clock::now(); + } + + void printTimeElapsed(const std::string &message) const + { + const auto now = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(now - startTime); + std::cout << "[Debug - Timer] " << message << ": " << ((double)duration.count() / 1000000) + << " seconds" << std::endl; + } + + private: + std::chrono::time_point startTime; +}; +} // namespace cpputils::debug + +#endif diff --git a/src/Backend.cpp b/src/Backend.cpp index a0fa0a2..a0301b3 100644 --- a/src/Backend.cpp +++ b/src/Backend.cpp @@ -9,6 +9,7 @@ #include "core/TaskItem.h" #include "core/TasksView.h" #include "core/TodoMd.h" +#include "cpp-utils/debug.h" #include #include #include @@ -19,9 +20,13 @@ Backend::Backend() : view(&mirai) { + cpputils::debug::Timer startDuration; std::cout << "Backend created" << std::endl; + + cpputils::debug::Timer readConfigDuration; QDir().mkdir(QDir::homePath() + "/.config/mirai"); QFile loadFile(QDir::homePath() + "/.config/mirai/config.json"); + readConfigDuration.printTimeElapsed("Read config duration"); if (!loadFile.open(QIODevice::ReadOnly)) { qWarning() << "Couldn't find existing config file"; @@ -43,7 +48,11 @@ Backend::Backend() : view(&mirai) exit(1); } for (const QJsonValueRef &filePath : jsonFilesPath.toArray()) { + cpputils::debug::Timer loadingFileDuration; mirai.loadFile(filePath.toString().toStdString()); + loadingFileDuration.printTimeElapsed( + "Loading file duration of " + filePath.toString().toStdString() + ); } auto jsonTagsConfig = json["tags"]; @@ -53,8 +62,14 @@ Backend::Backend() : view(&mirai) jsonTagsConfig.toObject()[jsonTagConfigKey].toObject()["color"].toString(); } } + + cpputils::debug::Timer updatingViewDuration; view.update(); + updatingViewDuration.printTimeElapsed("Updating view duration"); + cpputils::debug::Timer rebuildQMLTasksListDuration; rebuildQMLTasksList(); + rebuildQMLTasksListDuration.printTimeElapsed("Rebuilding QML duration"); + startDuration.printTimeElapsed("Start duration"); } void Backend::addTodo(QString newTodo, QString date)