[英]C# Parsing text file overhead
我正在尝试将一个非常简单的文本文件解析为一些结构。 为此,我需要在每个新行和每个空格上拆分整个文本。 代码非常简单:
string path = "C:/file.ext";
string fileString = File.ReadAllText (path);
string[] splitFile = fileString.Split (' ', '\n', '/');
对上述代码进行概要分析(使用内置的游戏引擎分析器)后,我注意到,在解析40KB文件时, File.ReadAllText
分配了280KB内存,字符串的Split分配了310KB的内存,这些内存的总和几乎是Byte的15倍。一份文件。
注意:重点是,读取文件时分配的文件大小是否大于文件大小的x倍是否正常。 我知道逐行阅读将使GC可以从以前的ReadLine中收集垃圾。 但这似乎并不正常,而且,由于目标设备是旧的android手机,我担心解析50MB文件实际上不会导致应用程序崩溃。 问题2的意思是如何最小化分配,而不是如何分配这些分配。
我没有足够的声誉来发表评论,但您是否尝试过使用Binary Reader Class读取二进制格式的文件,然后一次读取8个字节?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.