Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
DurationCollector.h
1/*
2** Copyright 2007-2024, RTE (https://www.rte-france.com)
3** See AUTHORS.txt
4** SPDX-License-Identifier: MPL-2.0
5** This file is part of Antares-Simulator,
6** Adequacy and Performance assessment for interconnected energy networks.
7**
8** Antares_Simulator is free software: you can redistribute it and/or modify
9** it under the terms of the Mozilla Public Licence 2.0 as published by
10** the Mozilla Foundation, either version 2 of the License, or
11** (at your option) any later version.
12**
13** Antares_Simulator is distributed in the hope that it will be useful,
14** but WITHOUT ANY WARRANTY; without even the implied warranty of
15** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16** Mozilla Public Licence 2.0 for more details.
17**
18** You should have received a copy of the Mozilla Public Licence 2.0
19** along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20*/
21#pragma once
22
23#include <chrono>
24#include <functional>
25#include <map>
26#include <mutex>
27#include <string>
28#include <vector>
29
30#include "file_content.h"
31
32namespace Benchmarking
33{
34
36{
37public:
38 void toFileContent(FileContent& file_content);
39 void addDuration(const std::string& name, int64_t duration);
40
42 {
43 OperationTimer(DurationCollector& collector, const std::string& key):
44 collector(collector),
45 key(key)
46 {
47 }
48
49 void addDuration(int64_t duration_ms) const;
50
51 DurationCollector& collector;
52 const std::string key;
53 };
54
55 OperationTimer operator()(const std::string& key);
56
57 friend void operator<<(const OperationTimer& op, const std::function<void(void)>& f);
58
59 int64_t getTime(const std::string& name) const;
60
61private:
62 std::map<std::string, std::vector<int64_t>> duration_items_;
63
64 // Durations can be added in a context of multi-threading, so we need to protect
65 // these additions from thread concurrency
66 std::mutex mutex_;
67};
68
69} // namespace Benchmarking
Definition DurationCollector.h:36
Definition file_content.h:30
Definition DurationCollector.h:42