Profiler.h
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include <WString.h>
23 
24 namespace IFS
25 {
29 class IProfiler
30 {
31 public:
32  virtual ~IProfiler()
33  {
34  }
35 
39  virtual void read(uint32_t address, const void* buffer, size_t size) = 0;
40 
44  virtual void write(uint32_t address, const void* buffer, size_t size) = 0;
45 
49  virtual void erase(uint32_t address, size_t size) = 0;
50 };
51 
52 class Profiler : public IProfiler
53 {
54 public:
55  struct Stat {
56  size_t count{0};
57  size_t size{0};
58 
59  void reset()
60  {
61  size = count = 0;
62  }
63 
64  void update(size_t n)
65  {
66  size += n;
67  ++count;
68  }
69 
70  String toString() const
71  {
72  String s;
73  s += F("count=");
74  s += count;
75  s += F(", size=");
76  s += (size + 1023) / 1024;
77  s += "KB";
78  return s;
79  }
80  };
81 
85 
86  void read(uint32_t address, const void* buffer, size_t size) override
87  {
88  (void)buffer;
89  readStat.update(size);
90  }
91 
92  void write(uint32_t address, const void* buffer, size_t size) override
93  {
94  (void)buffer;
95  writeStat.update(size);
96  }
97 
98  void erase(uint32_t address, size_t size) override
99  {
100  eraseStat.update(size);
101  }
102 
103  void reset()
104  {
105  readStat.reset();
106  writeStat.reset();
107  eraseStat.reset();
108  }
109 
110  String toString() const
111  {
112  String s;
113  s += F("Read: ");
114  s += readStat.toString();
115  s += F(", Write: ");
116  s += writeStat.toString();
117  s += F(", Erase: ");
118  s += eraseStat.toString();
119  return s;
120  }
121 };
122 
123 } // namespace IFS
void erase(uint32_t address, size_t size) override
Called BEFORE an erase operation.
Definition: Profiler.h:98
virtual ~IProfiler()
Definition: Profiler.h:32
void update(size_t n)
Definition: Profiler.h:64
The String class.
Definition: WString.h:136
Stat eraseStat
Definition: Profiler.h:84
void reset()
Definition: Profiler.h:103
void reset()
Definition: Profiler.h:59
virtual void erase(uint32_t address, size_t size)=0
Called BEFORE an erase operation.
#define F(string_literal)
Wrap a string literal stored in flash and access it using a String object.
Definition: WString.h:113
Definition: DirectoryTemplate.h:36
Definition: Profiler.h:55
void write(uint32_t address, const void *buffer, size_t size) override
Called BEFORE writing a block of data.
Definition: Profiler.h:92
virtual void read(uint32_t address, const void *buffer, size_t size)=0
Called AFTER reading a block of data.
String toString() const
Definition: Profiler.h:70
Filesystems may optionally provide performance statistics.
Definition: Profiler.h:29
String toString() const
Definition: Profiler.h:110
virtual void write(uint32_t address, const void *buffer, size_t size)=0
Called BEFORE writing a block of data.
Stat writeStat
Definition: Profiler.h:83
Stat readStat
Definition: Profiler.h:82
Definition: Profiler.h:52
void read(uint32_t address, const void *buffer, size_t size) override
Called AFTER reading a block of data.
Definition: Profiler.h:86