【发布时间】:2012-03-09 18:45:28
【问题描述】:
我有一个应用程序在内存中有大约 1,000,000 个字符串出于性能原因。我的应用程序消耗约 200 MB RAM。
我想减少字符串消耗的内存量。
我知道 .NET 表示 UTF-16 编码的字符串(每个字符 2 个字节)。我的应用程序中的大多数字符串都包含纯英文字符,因此以 UTF-8 编码存储它们的效率将是 UTF-16 的 2 倍。
有没有办法在允许标准字符串函数的同时以 UTF-8 编码将字符串存储在内存中? (我的需求主要包括 IndexOf 和 StringComparison.OrdinalIgnoreCase)。
【问题讨论】:
-
您是否必须将所有 1,000,000 个字符串加载到内存中?您能否提供更多详细信息,说明您对内存中的所有这些字符串究竟做了什么?
-
为什么 200MB 是个问题,你有内存不足或内存不足的问题吗?
-
但是,200MB 是个问题吗?您的用户是否有少量可用内存?请注意,我也不是说 200MB 是可以接受的,这取决于应用程序,但通常,当人们“抱怨”内存使用和应用程序时,他们不会因为一个原因而认为他们拥有所有可用的内存;让应用程序运行得更快!
-
我喜欢将内存使用比作车库空间使用。如果你有一个可以停放大约 10 辆车的大车库,你为什么要在角落的长凳上争论一平方英尺?
-
@LasseV.Karlsen - 如果你照顾好美分,美元就会照顾好自己。
标签: c# .net string utf-8 utf-16