Durante la lettura del codice sorgente di Roslyn on GitHub, ho notato la tanto usata classe ObjectPool<T>
. Viene utilizzato per ridurre il sovraccarico della memoria.Perché roslyn avvolge oggetti nelle strutture quando vengono inseriti negli array?
Internamente utilizza an array per memorizzare gli oggetti raggruppati. Quello che non capisco è il motivo per cui utilizza una struttura privata denominata Element
contenente un singolo campo di tipo T
come elemento di matrice, invece di utilizzare semplicemente T
.
Questo è motivo di preoccupazione per le prestazioni? Sovraccarico di memoria?
Holy ..... non mi aspettavo questo, dovrebbe essere possibile dichiarare gli array come invarianti. Sarebbe molto più bello di questa soluzione alternativa. Ora ho bisogno di cambiare alcune cose nel mio motore di visualizzazione. : -/ –
Dannazione ... Non lo sapevo. Domani scriverò sicuramente qualche codice: - \ –
Ho pubblicato una [proposta di funzionalità] (https://github.com/dotnet/roslyn/issues/4211) sul [progetto Roslyn] (https: // github .com/dotnet/Roslyn). Ha lo scopo di rendere l'utilizzo di array invarianti un po 'più semplice. – Wazner