12#ifndef ARCANE_UTILS_PROFILING_H
13#define ARCANE_UTILS_PROFILING_H
19#include "arcane/utils/String.h"
29class AcceleratorStatInfoList;
46 Int64 m_begin_time = 0.0;
47 ForLoopOneExecStat* m_stat_info =
nullptr;
64 void merge(
const ForLoopOneExecStat& loop_stat_info,
const ForLoopTraceInfo& loop_trace_info);
72 ForLoopStatInfoListImpl* _internalImpl()
const {
return m_p; }
76 ForLoopStatInfoListImpl* m_p =
nullptr;
92class ARCANE_UTILS_EXPORT ForLoopOneExecStat
101 void incrementNbChunk() { ++m_nb_chunk; }
104 void setBeginTime(Int64 v) { m_begin_time = v; }
107 void setEndTime(Int64 v) { m_end_time = v; }
110 Int64 nbChunk()
const {
return m_nb_chunk; }
118 Int64 execTime()
const {
return m_end_time - m_begin_time; }
130 std::atomic<Int64> m_nb_chunk = 0;
133 Int64 m_begin_time = 0;
136 Int64 m_end_time = 0;
150class ARCANE_UTILS_EXPORT ProfilingRegistry
158 ARCANE_DEPRECATED_REASON(
"Y2023: Use _threadLocalForLoopInstance() instead")
159 static impl::ForLoopStatInfoList* threadLocalInstance();
167 static
void setProfilingLevel(Int32 level);
170 static Int32 profilingLevel() {
return m_profiling_level; }
173 static bool hasProfiling() {
return m_profiling_level > 0; }
183 static void visitLoopStat(
const std::function<
void(
const impl::ForLoopStatInfoList&)>& f);
193 static void visitAcceleratorStat(
const std::function<
void(
const impl::AcceleratorStatInfoList&)>& f);
195 static const impl::ForLoopCumulativeStat& globalLoopStat();
205 static impl::ForLoopStatInfoList* _threadLocalForLoopInstance();
211 static impl::AcceleratorStatInfoList* _threadLocalAcceleratorInstance();
215 static Int32 m_profiling_level;
Déclarations des types utilisés dans Arcane.
Informations de trace pour une boucle 'for'.
Statistiques d'exécution des boucles.
Classe permettant de récupérer le temps passé entre l'appel au constructeur et au destructeur.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-