Компромисс создания коллекции на лету или заранее - PullRequest
1 голос
/ 21 октября 2010

Преимущества и недостатки создания экземпляра коллекции на лету или заранее, во время инициализации для последующего использования.

У меня есть целый набор потоков, каждый из которых должен вывести буфер, который помещен в очередьочередь с приоритетами или интервалами.Мне было интересно, будет ли эффективнее создавать в c # кольцевой буфер типа X, размером 2048 заранее, и просто записывать в каждый из них и повторно использовать позже, или позволить каждому потоку создавать буфер на лету и ставить в очередьэто, то есть создать их, когда это необходимо, и обеспечить нормальную очистку в соответствии с.

Я знаю, что GC попытается удалить предварительно созданную циклическую очередь.В прошлом у меня были странные проблемы с отладкой, когда я искал объект, которого больше не существует, потому что GC удалил его согласно.

Буду признателен за любую помощь или совет.

Боб.

1 Ответ

1 голос
/ 21 октября 2010

GC не удалит объект, на который у вас все еще есть ссылка - другими словами, если бы вы смогли использовать ваш предварительно созданный буфер, он не был бы собран мусором - если бы у вас не было WeakReference к этому, конечно.

Знаете ли вы , что это вообще будет узким местом в производительности? Почему бы не написать самый простой код, который работает первым, и измерить, насколько хорошо он работает?

...