DOLFINx 0.12.0.0
DOLFINx C++
Loading...
Searching...
No Matches
TimeLogger.h
1// Copyright (C) 2003-2016 Anders Logg, 2015 Jan Blechta
2//
3// This file is part of DOLFINx (https://www.fenicsproject.org)
4//
5// SPDX-License-Identifier: LGPL-3.0-or-later
6
7#pragma once
8
9#include "Table.h"
10#include "timing.h"
11#include <chrono>
12#include <functional>
13#include <map>
14#include <mpi.h>
15#include <string>
16#include <string_view>
17#include <utility>
18
19namespace dolfinx::common
20{
26class TimeLogger
27{
28public:
31 static TimeLogger& instance();
32
34 void register_timing(std::string_view task,
35 std::chrono::duration<double, std::ratio<1>> wall);
36
38 Table timing_table() const;
39
44 void list_timings(MPI_Comm comm, Table::Reduction reduction) const;
45
49 std::pair<int, std::chrono::duration<double, std::ratio<1>>>
50 timing(std::string_view task) const;
51
54 std::map<std::string,
55 std::pair<int, std::chrono::duration<double, std::ratio<1>>>,
56 std::less<>>
57 timings() const;
58
59private:
61 TimeLogger() = default;
62
63 // This class is used as a singleton and thus should not allow copies.
64 TimeLogger(const TimeLogger&) = delete;
65
66 // This class is used as a singleton and thus should not allow copies.
67 TimeLogger& operator=(const TimeLogger&) = delete;
68
70 ~TimeLogger() = default;
71
72 // List of timings for tasks, map from string to (num_timings,
73 // total_wall_time)
74 std::map<std::string,
75 std::pair<int, std::chrono::duration<double, std::ratio<1>>>,
76 std::less<>>
77 _timings;
78};
79} // namespace dolfinx::common
This class provides storage and pretty-printing for tables.
Definition Table.h:30
Reduction
Definition Table.h:35
void register_timing(std::string_view task, std::chrono::duration< double, std::ratio< 1 > > wall)
Register timing (for later summary).
Definition TimeLogger.cpp:24
std::map< std::string, std::pair< int, std::chrono::duration< double, std::ratio< 1 > > >, std::less<> > timings() const
Logged elapsed times.
Definition TimeLogger.cpp:86
void list_timings(MPI_Comm comm, Table::Reduction reduction) const
Definition TimeLogger.cpp:41
Table timing_table() const
Return a summary of timings and tasks in a Table.
Definition TimeLogger.cpp:53
static TimeLogger & instance()
Singleton access.
Definition TimeLogger.cpp:17
std::pair< int, std::chrono::duration< double, std::ratio< 1 > > > timing(std::string_view task) const
Return timing.
Definition TimeLogger.cpp:70
Miscellaneous classes, functions and types.
Definition dolfinx_common.h:8