\doxysection{src/include/serif/utils/dependencies/timing.hpp File Reference} \hypertarget{timing_8hpp}{}\label{timing_8hpp}\index{src/include/serif/utils/dependencies/timing.hpp@{src/include/serif/utils/dependencies/timing.hpp}} {\ttfamily \#include $<$algorithm$>$}\newline {\ttfamily \#include $<$chrono$>$}\newline {\ttfamily \#include $<$cstddef$>$}\newline {\ttfamily \#include $<$cstdint$>$}\newline {\ttfamily \#include $<$memory$>$}\newline {\ttfamily \#include $<$string$>$}\newline {\ttfamily \#include $<$vector$>$}\newline {\ttfamily \#include "{}nameof.\+hpp"{}}\newline {\ttfamily \#include "{}serif/utils/dependencies/observers.\+hpp"{}}\newline Include dependency graph for timing.\+hpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{timing_8hpp__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=207pt]{timing_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_node_timing}{serif\+::utils\+::dependencies\+::\+Node\+Timing}} \begin{DoxyCompactList}\small\item\em Wall time for attempted node work, independently of later cache or Newton acceptance. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_graph_timing_run}{serif\+::utils\+::dependencies\+::\+Graph\+Timing\+Run}} \begin{DoxyCompactList}\small\item\em One graph binding\textquotesingle{}s declaration-\/ordered catalog, including nodes which never execute. \end{DoxyCompactList}\item class \mbox{\hyperlink{classserif_1_1utils_1_1dependencies_1_1_graph_timing}{serif\+::utils\+::dependencies\+::\+Graph\+Timing}} \begin{DoxyCompactList}\small\item\em Collect independent graph bindings without mixing timers into numerical restart history. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_steady_node_clock}{serif\+::utils\+::dependencies\+::\+Steady\+Node\+Clock}} \begin{DoxyCompactList}\small\item\em Read monotonic elapsed wall time without changing physical computations. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_graph_timing_factory}{serif\+::utils\+::dependencies\+::\+Graph\+Timing\+Factory$<$ Clock $>$}} \begin{DoxyCompactList}\small\item\em Bind one generic timing observer after the model\textquotesingle{}s complete graph type is known. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif}{serif}} \item namespace \mbox{\hyperlink{namespaceserif_1_1utils}{serif\+::utils}} \item namespace \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies}{serif\+::utils\+::dependencies}} \item namespace \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_1_1detail}{serif\+::utils\+::dependencies\+::detail}} \end{DoxyCompactItemize} \doxysubsubsection*{Concepts} \begin{DoxyCompactItemize} \item concept \mbox{\hyperlink{conceptserif_1_1utils_1_1dependencies_1_1_node_timing_clock}{serif\+::utils\+::dependencies\+::\+Node\+Timing\+Clock}} \begin{DoxyCompactList}\small\item\em Restrict injected clocks to ordinary arithmetic chrono values safe in a closing callback. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$Node\+Timing\+Clock Clock = Steady\+Node\+Clock$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_a48e42d1b80ff447550fed30ad60f0687}{serif\+::utils\+::dependencies\+::time\+\_\+graph\+\_\+nodes}} (\mbox{\hyperlink{classserif_1_1utils_1_1dependencies_1_1_graph_timing}{Graph\+Timing}} \&timing, Clock clock=\{\}) \begin{DoxyCompactList}\small\item\em Opt into node timings; a custom clock supports deterministic accounting tests without sleeps. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Time\+Point$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_1_1detail_afe5c2c82beaeb0fe84e0c663cc6c49d6}{serif\+::utils\+::dependencies\+::detail\+::node\+\_\+time\+\_\+point\+\_\+v}} = false \item {\footnotesize template$<$typename Clock, typename Duration$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_1_1detail_a21f39eb3f6e5ae2be643efdc777f71e1}{serif\+::utils\+::dependencies\+::detail\+::node\+\_\+time\+\_\+point\+\_\+v$<$ std\+::chrono\+::time\+\_\+point$<$ Clock, Duration $>$ $>$}} = std\+::is\+\_\+arithmetic\+\_\+v$<$typename Duration\+::rep$>$ \end{DoxyCompactItemize}