我需要将数据存储到内存中.我的数据类型数据是字符串.我想最小化内存使用量.我想我必须将字符串更改为字节.我对吗?如果我将字符串转换为字节,这意味着我必须将字符串转换为TMemoryStream?
如果你真的想转换它,那么这段代码将完成它
var
BinarySize: Integer;
InputString: string;
StringAsBytes: array of Byte;
begin
BinarySize := (Length(InputString) + 1) * SizeOf(Char);
SetLength(StringAsBytes, BinarySize);
Move(InputString[1], StringAsBytes[0], BinarySize);
Run Code Online (Sandbox Code Playgroud)
但正如已经说过的,这不会挽救你的记忆.它的使用量几乎相同.你不会从中获益.如果你需要很多字符串采取不同的方法.喜欢这个选择列表中的内容:
如果不了解更多问题,很难提供进一步的帮助.
编辑:
如果你真的想要一个最小的内存占用并且你可以使用更低的速度(但仍然非常快),你可以使用Suffix Trie或B-Tree或事件简单的二叉树.它们可以直接从硬盘驱动器工作,并且可以非常快速地进行搜索.如果然后将数据的子集缓存到RAM,则可以获得最佳的解决方案内存与速度.
无论如何,鉴于您声称拥有的大量数据,似乎根本不需要内存优化.22MB的RAM几乎不是问题,不值得优化.
| 归档时间: |
|
| 查看次数: |
10817 次 |
| 最近记录: |