DOLFINx
0.12.0.0
DOLFINx C++
Toggle main menu visibility
Loading...
Searching...
No Matches
dolfinx
common
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
19
namespace
dolfinx::common
20
{
26
class
TimeLogger
27
{
28
public
:
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
59
private
:
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
dolfinx::Table
This class provides storage and pretty-printing for tables.
Definition
Table.h:30
dolfinx::Table::Reduction
Reduction
Definition
Table.h:35
dolfinx::common::TimeLogger::register_timing
void register_timing(std::string_view task, std::chrono::duration< double, std::ratio< 1 > > wall)
Register timing (for later summary).
Definition
TimeLogger.cpp:24
dolfinx::common::TimeLogger::timings
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
dolfinx::common::TimeLogger::list_timings
void list_timings(MPI_Comm comm, Table::Reduction reduction) const
Definition
TimeLogger.cpp:41
dolfinx::common::TimeLogger::timing_table
Table timing_table() const
Return a summary of timings and tasks in a Table.
Definition
TimeLogger.cpp:53
dolfinx::common::TimeLogger::instance
static TimeLogger & instance()
Singleton access.
Definition
TimeLogger.cpp:17
dolfinx::common::TimeLogger::timing
std::pair< int, std::chrono::duration< double, std::ratio< 1 > > > timing(std::string_view task) const
Return timing.
Definition
TimeLogger.cpp:70
dolfinx::common
Miscellaneous classes, functions and types.
Definition
dolfinx_common.h:8
Generated by
1.17.0