Zajrzałem do implementacji Array.Resize() i zauważyłem, że nowa tablica jest tworzona i zwracana. Dążę do zerowej alokacji pamięci podczas rozgrywki, dlatego muszę unikać tworzenia nowych typów referencji. Czy zmiana rozmiaru tablicy powoduje uruchomienie Garbage Collectora w poprzedniej macierzy? Tworzę własny program do sprawdzania tablic 2D, ale zasadniczo działa on tak samo, jak metoda .NET Resize()
.Czy zmiana rozmiaru tablic wywołuje GC?
Jeśli nowa tablica jest mniejsza niż poprzednia, ale nadmiar obiektów został już umieszczony z powrotem w ogólnej puli obiektów, czy spowoduje to wywołanie GC?
Tablice będą stale tworzone w mojej pętli gry, więc muszę postarać się, aby była jak najbardziej efektywna. Próbuję utworzyć array pool
jako taki, więc nie ma potrzeby dalszego tworzenia ich w grze. Jeśli jednak metoda zmiany rozmiaru robi to samo, nie ma sensu nie tylko tworzyć instancję nowej tablicy zamiast puli.
Dzięki za pomoc
Może mógłbyś użyć 'List', która jest w zasadzie automatyczną skalą o zmienionej wielkości, i domyślam się, że kiedy ją zredukujesz, to nie zmniejsza jej natychmiast ... mmh Muszę sprawdzić ... –
digEmAll
@digEmAll: 'List' używa 'T []' wewnętrznie, ale zmienia rozmiar dla ciebie. Innymi słowy: utworzy nowe instancje. –
Dzięki za sugestywę. Lista list przeszła mi przez myśl (jak używam tablic 2D), ale jest nieco bardziej skomplikowana dla mojej gry. – keyboardP