You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A production-grade, streaming log analysis engine built with modern C++17 and a responsive ImGui frontend. Designed for high throughput, low latency, and zero-copy parsing.
3
+
Een productie-waardige, streaming log analyse engine gebouwd met modern C++17 en een responsieve ImGui frontend. Ontworpen voor hoge doorvoer, lage latency en zero-copy parsing.
**Decision:**Used `string_view`for all parsing interfaces.
98
-
***Pro:**Zero allocation during parsing. A line is read into a reusable buffer, and fields are just pointers into that buffer.
99
-
***Con:**Requires careful lifetime management (views are invalid after next line read).
100
-
***Mitigation:**`LogEntry`owns its data (deep copy) only when stored for "Top N" aggregation, but statistical analyzers don't need storage.
97
+
**Keuze:**Gebruik van `string_view`voor alle parsing interfaces.
98
+
***Pro:**Nul allocaties tijdens parsing. Een regel wordt in een herbruikbare buffer gelezen en velden zijn slechts pointers naar die buffer.
99
+
***Con:**Vereist zorgvuldig levensduurbeheer (views zijn ongeldig na het lezen van de volgende regel).
100
+
***Mitigatie:**`LogEntry`neemt eigendom over van data (deep copy) alleen wanneer opgeslagen voor "Top N" aggregatie, maar statistische analyzers hebben geen opslag nodig.
***Reason:** Regex is convenient but orders of magnitude slower for simple log formats. `from_chars` (C++17) provides the fastest integer conversion available.
***Reden:** Regex is handig maar ordes van grootte trager voor eenvoudige logformaten. `from_chars` (C++17) biedt de snelst mogelijke integer conversie.
105
105
106
106
### 3. Immediate vs Deferred Sorting
107
-
**Decision:** "Lazy Sorting" for Top Errors.
108
-
***Mechanism:**`TopErrorAnalyzer`accumulates counts in a`std::map`. Sorting happens only once at`finalize()`, ensuring `O(N)`insertion and`O(K log K)`final sort (where K is unique error messages, not total lines).
107
+
**Keuze:** "Lazy Sorting" voor Top Errors.
108
+
***Mechanisme:**`TopErrorAnalyzer`accumuleert tellingen in een`std::map`. Sorteren gebeurt pas eenmalig bij`finalize()`, wat zorgt voor `O(N)`insertie en`O(K log K)`uiteindelijke sortering (waarbij K unieke foutmeldingen zijn, niet het totaal aantal regels).
109
109
110
110
## 🧪 Testing
111
-
The project uses **Catch2 v3** for reliable unit testing:
0 commit comments