Рассматривая это с точки зрения строго памяти, каковы преимущества и недостатки использования System.IO.MemoryStream по сравнению с System.String в качестве представления в памяти.
Вот некоторые факторы, которые я пытаюсь исследовать:
- Как эти объекты действуют в [гипотетической] сильно фрагментированной среде с малой памятью
IMO, MemoryStream полезен только тогда, когда кодировка тривиальна (например, ASCII, ISO-8859-X и т. Д.). Если кодировка UTF-8 и , у вас есть символы не ASCII, тогда обработка станет более сложной. Конечно, MemoryStream почти наверняка будет потреблять меньше памяти, но в остальном разницы нет. Под капотом MemoryStream используется байтовый массив, который также должен быть размещен в непрерывной части памяти.
- Фактический размер в памяти (если поток равен UTF8, мы почти вдвое сократили размер)
Правильно, с чисто ASCII-символами MemoryStream будет потреблять половину того, что потребляет эквивалентная строка.
- Есть еще один объект, о котором я не думал?
List<byte> // has a nicer interface for processing
Как строки хранятся в базе данных? varchar или nvarchar?
С уважением,
Andreas