diff --git a/README.md b/README.md
index 6f3f2bc..d8c793b 100644
--- a/README.md
+++ b/README.md
@@ -23,15 +23,15 @@ WeaselJSON is a high-performance, streaming JSON parser that uses callbacks inst
```mermaid
flowchart TD
- A[Need to parse JSON?] --> B{Do you have memory constraints
or truly streaming data?}
+ A[Need to parse JSON?] --> B{Do you have memory constraints
or do you want to parse partial data?}
B -->|No| C{Is performance critical
and data fits in memory?}
B -->|Yes| D{Can you control
how the JSON is laid out?}
- C -->|No| E[SimdJSON DOM API
Fast and easy to use
Wait why are you using C++?]
+ C -->|No| E[SimdJSON DOM API
Fast and easy to use]
C -->|Yes| F{Are you OK with potential
performance traps?}
- F -->|Yes| G[SimdJSON On-Demand
Very fast
Nice API
Easy to use wrong]
+ F -->|Yes| G[SimdJSON On-Demand
Very fast
Nice API
Forward-only traversal]
F -->|No| H[Consider weaseljson
if you can deal with callbacks]
D -->|No| I{Can you preprocess data
or make multiple requests?}
@@ -50,8 +50,9 @@ flowchart TD
### Use **SimdJSON On-Demand** when:
- Performance is critical and your data fits in memory
-- You understand that some access patterns can accidentally become very slow
+- You can work with forward-only traversal (no random access or backtracking)
- You need maximum speed but still want a usable API
+- Your JSON structure is consistent and you control both generation and parsing
### Use **WeaselJSON** when:
- You absolutely cannot load the whole JSON into memory