Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IProfilingService.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* IProfilingService.h (C) 2000-2023 */
9/* */
10/* Interface d'un service de profiling. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_IPROFILINGSERVICE_H
13#define ARCANE_UTILS_IPROFILINGSERVICE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class ITimerMng;
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
44class ARCANE_UTILS_EXPORT IProfilingService
45{
46 public:
47
48 virtual ~IProfilingService() = default;
49
50 public:
51
57 virtual void initialize() = 0;
58
60 virtual bool isInitialized() const { return false; }
61
63 virtual void startProfiling() = 0;
64
65 virtual void switchEvent() = 0;
66
68 virtual void stopProfiling() = 0;
69
77 virtual void printInfos(bool dump_file = false) = 0;
78
79 virtual void getInfos(Int64Array&) = 0;
80
82 virtual void dumpJSON(JSONWriter& writer) = 0;
83
89 virtual void reset() = 0;
90
92 virtual ITimerMng* timerMng() = 0;
93};
94
95/*---------------------------------------------------------------------------*/
96/*---------------------------------------------------------------------------*/
100class ARCANE_UTILS_EXPORT ProfilingSentry
101{
102 public:
103
105 : m_service(s)
106 {
107 if (m_service)
108 m_service->startProfiling();
109 }
111 {
112 if (m_service)
113 m_service->stopProfiling();
114 }
115
116 public:
117
118 IProfilingService* service() { return m_service; }
119
120 private:
121
122 IProfilingService* m_service;
123};
124
125/*---------------------------------------------------------------------------*/
126/*---------------------------------------------------------------------------*/
132class ARCANE_UTILS_EXPORT ProfilingSentryWithInitialize
133{
134 public:
135
142 : m_service(s)
143 {
144 if (m_service) {
145 if (!m_service->isInitialized())
146 m_service->initialize();
147 m_service->startProfiling();
148 }
149 }
150
152 {
153 if (m_service) {
154 m_service->stopProfiling();
155 if (m_print_at_end)
156 m_service->printInfos(false);
157 }
158 }
159
160 public:
161
162 IProfilingService* service() { return m_service; }
164 void setPrintAtEnd(bool v) { m_print_at_end = v; }
165
166 private:
167
168 IProfilingService* m_service = nullptr;
169 bool m_print_at_end = false;
170};
171
172/*---------------------------------------------------------------------------*/
173/*---------------------------------------------------------------------------*/
174
175} // End namespace Arcane
176
177/*---------------------------------------------------------------------------*/
178/*---------------------------------------------------------------------------*/
179
180#endif
Déclarations des types utilisés dans Arcane.
Tableau d'items de types quelconques.
Interface d'un service de profiling.
virtual bool isInitialized() const
Indique si initialize() a déjà été appelé
virtual ITimerMng * timerMng()=0
Timer utilisant les fonctionnalités de ce service si elles existent. Peut être nul.
virtual void stopProfiling()=0
Stoppe le profiling.
virtual void startProfiling()=0
Démarre un profiling.
virtual void initialize()=0
Initialise le service de profiling.
virtual void dumpJSON(JSONWriter &writer)=0
Ecrit les infos de profiling dans l'écrivain writer.
virtual void reset()=0
Remet à zéro les compteurs.
virtual void printInfos(bool dump_file=false)=0
Affiche les infos de profiling.
Interface d'un gestionnaire de timer.
Definition ITimerMng.h:53
Ecrivain au format JSON.
Definition JSONWriter.h:33
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Classe permettant de démarrer et arrêter automatiquement un service.
void setPrintAtEnd(bool v)
Indique si on imprime les résultats à la fin du profiling.
ProfilingSentryWithInitialize(IProfilingService *s)
Construit une instance associée au service s.
Classe permettant de démarrer et arrêter automatiquement un service.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-