Stroika Library 3.0d23
 
Loading...
Searching...
No Matches
Cache/Statistics.h
Go to the documentation of this file.
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2026. All rights reserved
3 */
4#ifndef _Stroika_Foundation_Cache_Statistics_h_
5#define _Stroika_Foundation_Cache_Statistics_h_ 1
6
7#include "Stroika/Foundation/StroikaPreComp.h"
8
9#include <type_traits>
10
12
13/**
14 * \file
15 */
16
17namespace Stroika::Foundation::Cache::Statistics {
18
19 /**
20 * Helper detail class for analyzing and tuning cache statistics.
21 *
22 * \note \em Thread-Safety <a href="Thread-Safety.md#Internally-Synchronized-Thread-Safety">Internally-Synchronized-Thread-Safety</a>
23 */
24 template <typename STATS_TYPE>
25 concept IStatsType = requires (STATS_TYPE s) {
26 { s.IncrementHits () };
27 { s.IncrementMisses () };
28 { s.ToString () } -> same_as<Characters::String>;
29 };
30
31 /**
32 * Helper detail class for analyzing and tuning cache statistics.
33 *
34 * \note \em Thread-Safety <a href="Thread-Safety.md#Internally-Synchronized-Thread-Safety">Internally-Synchronized-Thread-Safety</a>
35 */
36 struct Stats_Basic {
37 Stats_Basic () = default;
38 Stats_Basic (Stats_Basic&& src) noexcept;
39 Stats_Basic (const Stats_Basic& src);
40
41 nonvirtual Stats_Basic& operator= (Stats_Basic&& rhs) noexcept;
42 nonvirtual Stats_Basic& operator= (const Stats_Basic& rhs);
43
44 nonvirtual void IncrementHits ();
45 nonvirtual void IncrementMisses ();
46
47 /**
48 * @see Characters::ToString ();
49 */
50 nonvirtual Characters::String ToString () const;
51
52 atomic<unsigned int> fCachedCollected_Hits{};
53 atomic<unsigned int> fCachedCollected_Misses{};
54 };
55 static_assert (IStatsType<Stats_Basic>);
56
57 /**
58 * Helper for DefaultTraits - when not collecting stats.
59 *
60 * \note \em Thread-Safety <a href="Thread-Safety.md#Internally-Synchronized-Thread-Safety">Internally-Synchronized-Thread-Safety</a>
61 */
62 struct Stats_Null {
63 void IncrementHits ();
64 void IncrementMisses ();
65
66 /**
67 * @see Characters::ToString ();
68 */
69 nonvirtual Characters::String ToString () const;
70 };
71 static_assert (IStatsType<Stats_Null>);
72
73 /**
74 * Helper for DefaultTraits.
75 *
76 * \note \em Thread-Safety <a href="Thread-Safety.md#Internally-Synchronized-Thread-Safety">Internally-Synchronized-Thread-Safety</a>
77 */
78 using StatsType_DEFAULT = conditional_t<qStroika_Foundation_Debug_AssertionsChecked, Stats_Basic, Stats_Null>;
79 static_assert (IStatsType<StatsType_DEFAULT>);
80
81}
82
83/*
84 ********************************************************************************
85 ***************************** Implementation Details ***************************
86 ********************************************************************************
87 */
88#include "Statistics.inl"
89
90#endif /*_Stroika_Foundation_Cache_Statistics_h_*/
conditional_t< qStroika_Foundation_Debug_AssertionsChecked, Stats_Basic, Stats_Null > StatsType_DEFAULT
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Definition String.h:201
nonvirtual Characters::String ToString() const
nonvirtual Characters::String ToString() const