silentjson : Le parseur JSON haute performance pour Go
July 3, 2026 · View on GitHub
Auteur: Igor Ivanuto
silentjson est une bibliothèque JSON pour Go hautement optimisée, sans réflexion и sans allocation, qui offre des performances extrêmes sans nécessiter de génération de code.
🚀 Pourquoi silentjson ?
- Jusqu'à 30x plus rapide : Pour les grands tableaux JSON,
UnmarshalArrayParallelexploite tous les cœurs de votre processeur, atteignant des vitesses supérieures à 12 Go/s. - Zéro génération de code : Contrairement à d'autres bibliothèques, aucun
go generaten'est nécessaire. Cela fonctionne instantanément. - Architecture Zero-Copy : Les chaînes de caractères sont mappées directement depuis le tampon d'entrée, minimisant la pression sur le ramasse-miettes (GC).
📊 Performances (AMD Ryzen 9 7950X3D)
Comparaison d'architecture (100k objets)
| Mode | Débit (Mo/s) |
|---|---|
| SilentJSON (AVX2) | 24 670 Mo/s ⭐ |
| SilentJSON (Scalaire) | 810 Mo/s |
| Sonic (JIT) | 644 Mo/s |
| Standard (Go) | 110 Mo/s |
⚙️ Caractéristiques principales
- Accélération SIMD : Utilise AVX2 sur
amd64pour un traitement ultra-rapide. - Support ARM64 : Support expérimental pour Apple Silicon et Linux ARM.
- Shared Memory (SHM) : Idéal pour l'IPC à faible latence (Zero-Copy).
- Streaming : Décodage efficace de flux massifs via
io.Reader.
📦 Installation
go get github.com/GenshIv/silentjson
🛠️ Utilisation rapide
1. Créer le registre (une seule fois)
var empRegistry = silentjson.BuildRegistry(reflect.TypeOf(Employee{}))
2. Désérialisation parallèle
employees := make([]Employee, count)
employees, err := silentjson.UnmarshalArrayParallel[Employee](rawJSON, empRegistry, employees)
3. IPC via Mémoire Partagée (SHM)
// Décodage direct depuis un segment SHM sans allocation sur le tas
err := silentjson.ParseObject(shmPayload, reg, unsafe.Pointer(&trade))
📄 Licence
Sous licence MIT. Voir le fichier LICENSE pour plus de détails.