当前位置:  开发笔记 > 编程语言 > 正文

.NET字符串与流 - 内存配置文件和特征

如何解决《.NET字符串与流-内存配置文件和特征》经验,为你挑选了1个好方法。

我需要从数据库(nvarchar)中提取大型Unicode文本字符串(例如200Mb)并存储在内存中进行处理.即我需要随机访问字符串的所有部分.

从严格的以内存为中心的角度来看,使用System.IO.MemoryStream和System.String作为内存表示的专家和内容是什么.

我试图研究的一些因素是:

这些对象如何在[假设]高度分散的低内存环境中起作用

不变性

内存中的实际大小(如果流是UTF8,我们的大小几乎减半)

还有另一个我没想过的对象吗?

我正在寻找关于这些要点的清晰度和建议,以及我没有想到的任何其他记忆考虑因素?

注意:可能有更好的方法来处理这些字符串,但此时我真的只是询问存储这样一个对象的内存考虑因素.



1> 小智..:

从严格的以内存为中心的角度来看,使用System.IO.MemoryStream和System.String作为内存表示的专家和内容是什么.

我试图研究的一些因素是:

这些对象如何在[假设]高度分散的低内存环境中起作用

IMO,MemoryStream仅在编码很简单时才有用(例如ASCII,ISO-8859-X等).如果编码是UTF-8 并且您有非ASCII字符,则处理将变得更加困难.当然,MemoryStream几乎肯定会消耗更少的内存,但除此之外没什么区别.在引擎盖下,MemoryStream使用一个字节数组,该数组也需要在连续的内存块中分配.

内存中的实际大小(如果流是UTF8,我们的大小几乎减半)

对,纯粹的ASCII字符,MemoryStream将消耗等效字符串消耗的一半.

还有另一个我没想过的对象吗?

List // has a nicer interface for processing

字符串如何存储在数据库中?varchar还是nvarchar?

问候,

安德烈亚斯

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有