Podczas czytania kodu źródłowego Roslyn on GitHub zauważyłem bardzo popularną klasę ObjectPool<T>
. Służy do zmniejszenia obciążenia pamięci.Dlaczego roslyn zawija obiekty w struktury po umieszczeniu w tablicach?
Wewnętrznie używa an array do przechowywania połączonych obiektów. Nie rozumiem, dlaczego używa on prywatnej struktury o nazwie Element
zawierającej pojedyncze pole typu T
jako element tablicy, zamiast po prostu używać T
.
Czy to nie dotyczy wydajności? Narzut pamięci?
Święte ..... Nie spodziewałem się tego, powinno być możliwe zadeklarowanie samych tablic jako niezmiennych. Byłoby o wiele ładniejsze niż to obejście. Teraz muszę zmienić pewne rzeczy w moim silniku wizualizacji. : -/ –
Cholera ... Nie wiedziałem tego. Zdecydowanie sprawdzę kod jutro: - \ –
Wysłałem [propozycję funkcji] (https://github.com/dotnet/roslyn/issues/4211) na [projekcie Roslyn] (https: // github .com/dotnet/roslyn). Ma to na celu ułatwienie korzystania z niezmiennych tablic. – Wazner