Deserializing many TypeReps may lead to high residency
- Vorherrschende Sprache
- Haskell
- Sterne
- 120
- Forks
- 70
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Deserialized `TypeRep`s don't share any structure with each other, which can potentially waste a lot of space. For example, if I fill a giant `Set` with deserialized `Dynamic` values, the lion's share of the space could be taken up by the `TypeRep`s. One potential fix would be to maintain weak tables holding deserialized `TyCon`s and `TypeRep`s. We could use one of type `Map Fingerprint (exists a. Weak (TypeRep a))` and one of type `Map Fingerprint (Weak TyCon)`, but other sorts of maps would probably be faster. When a (perhaps recursively) deserialized `TyCon` or `TypeRep` matches one stored in the table, it would be thrown away in favor of the stored one.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne damit nachzuverfolgen, wie TypeRep- und TyCon-Werte deserialisiert werden und wie Fingerprints sie identifizieren; das Issue nennt keine Dateien oder Tests. Untersuche Optionen für Weak Tables, um rekursiv deserialisierte Werte gemeinsam zu nutzen, und definiere anschließend Messungen, die eine verringerte Speicherbelegung zeigen, wenn viele Dynamic-Werte geladen werden, während das Deserialisierungsverhalten erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- haskell
- Bereich
- performance
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100