12#ifndef ARCANE_IMPL_TIMESTATS_H
13#define ARCANE_IMPL_TIMESTATS_H
17#include "arcane/utils/List.h"
18#include "arcane/utils/TraceAccessor.h"
19#include "arcane/utils/FixedArray.h"
21#include "arcane/core/ITimeStats.h"
57 static const Integer TC_Local = 0;
58 static const Integer TC_Cumulative = 1;
64 TimeValue(
Real real_time,
Real virtual_time)
66 m_time[TT_Real][TC_Local] = real_time;
67 m_time[TT_Virtual][TC_Local] = virtual_time;
75 void add(
const TimeValue& phase)
78 m_time[i][TC_Local] += phase.m_time[i][TC_Local];
91 : TimeValue(real_time,virtual_time), m_type(pt) { }
92 PhaseValue() =
default;
102 TimeStats(
const TimeStats& rhs) =
delete;
103 TimeStats& operator=(
const TimeStats& rhs) =
delete;
104 ~TimeStats()
override;
113 void beginAction(
const String& action_name)
override;
114 void endAction(
const String& action_name,
bool print_time)
override;
115 void beginPhase(
eTimePhase phase_type)
override;
116 void endPhase(
eTimePhase phase_type)
override;
126 const String& name,
bool use_elapsed_time)
override;
141 void resetStats(
const String& name)
override;
146 Timer* m_virtual_timer =
nullptr;
147 Timer* m_real_timer =
nullptr;
148 bool m_is_gathering =
false;
154 Action* m_main_action =
nullptr;
155 Action* m_current_action =
nullptr;
156 std::stack<eTimePhase> m_phases_type;
157 bool m_need_compute_elapsed_time =
false;
158 std::ostringstream m_full_stats_str;
159 bool m_full_stats =
false;
167 void _checkGathering();
168 void _computeCumulativeTimes();
169 void _dumpCumulativeTime(std::ostream& ostr,
Action& action,
eTimePhase tp,eTimeType tt);
170 void _dumpAllPhases(std::ostream& ostr,
Action& action,eTimeType tt,
int tc,
Real nb);
Tableau 1D de taille fixe.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface gérant les statistiques sur l'exécution.
Interface gérant les statistiques sur les temps d'exécution.
Interface d'un gestionnaire de timer.
Interface du gestionnaire de traces.
Implémentation d'une collection d'éléments sous forme de vecteur.
Chaîne de caractères unicode.
Real elapsedTime(eTimePhase phase) override
Temps réel écoulé pour la phase phase.
void dumpStats(std::ostream &ostr, bool is_verbose, Real nb, const String &name, bool use_elapsed_time) override
Affiche les statistiques sur les temps d'exécution.
void endGatherStats() override
Arrête la collection des temps.
void dumpCurrentStats(const String &action) override
Affiche les statistiques d'une action.
ActionSeries * m_previous_action_series
Statistiques sur les exécutions précédentes.
bool isGathering() const override
Indique si les statistiques sont actives.
void dumpStatsJSON(JSONWriter &writer) override
Sérialise dans l'écrivain writer les statistiques temporelles.
ITimeMetricCollector * metricCollector() override
Interface de collection associée.
void notifyNewIterationLoop() override
Notifie qu'on commence une nouvelle itération de la boucle de calcul.
static const Integer NB_TIME_TYPE
Nombre de valeurs de eTimeType.
void beginGatherStats() override
Démarre la collection des temps.
ActionSeries * m_current_action_series
Statistiques sur l'exécution en cours.
void dumpTimeAndMemoryUsage(IParallelMng *pm) override
Affiche la date actuelle et la mémoire consommée.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.
eTimePhase
Phase d'une action temporelle.