haskell / haskell/binary

Deserializing many TypeReps may lead to high residency

Aperta
#143 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Haskell
Stelle
120
Fork
70
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia tracciando come vengono deserializzati i valori TypeRep e TyCon e come i fingerprint li identificano; l’issue non indica file o test. Esamina le opzioni delle tabelle deboli per condividere i valori deserializzati ricorsivamente, quindi definisci misurazioni che mostrino una riduzione dell’occupazione di memoria quando vengono caricati molti valori Dynamic, preservando al contempo il comportamento della deserializzazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
haskell
Ambito
performance
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.