Управление тайлингом памяти и крупные объекты C # - PullRequest
5 голосов
/ 17 июля 2011

У меня есть набор изображений, которые хранятся в трехмерном массиве типа Int16, число кэшируемых изображений может достигать 600 или более изображений, что влияет на производительность памяти и производительность сборки мусора. Я слышал о тайлинге памяти, который может улучшить управление памятью, так как он устанавливает элементы подмассива в отдельный фрагмент.
- можно ли использовать мозаику памяти в моем случае?
- если да, как я могу его использовать?

Ответы [ 2 ]

3 голосов
/ 17 июля 2011

Могу ли я использовать тайлинг памяти в моем случае?

Да.3D массив int16 [,,] должен быть ОДНЫМ блоком памяти.Положите это на кусочки, и они уже меньше.([] [,]).

Остальное зависит от ваших точных потребностей.

1 голос
/ 17 июля 2011

Сборка мусора выиграет, если вы соберете как можно меньше вещей. Многомерный массив будет рассматриваться как одно выделение:

short[,,] a = new short[2,3,4];

Зубчатый массив будет использовать много разных распределений. Его меньшие размеры могут быть распределены намного быстрее, но это может привести к большей нагрузке на GC во время сбора:

short[][][] a = new short[2][][];

Раньше я никогда не слышал о "мозаике памяти", поэтому, если вы сможете объяснить, что это, я мог бы лучше ответить на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...