Delphi 老外分享的textFile高速遍历大数据文本


本文整理自网络,侵删。

 
请确保您使用的是FastMM4-这样可以加快速度。内存分配很多。
如果您只读取一次文件,则可以根据需要继续使用旧的“ TextFile”处理。
只需添加一些更大的读取缓冲区,并摆脱I / O检查即可:

 var
   sourceFile   : textFile;
   line             : string;
   fields          : TinputList;
   buf: array[word] of byte; // 64 KB buffer
 begin
   fields:=TinputList.create;
   AssignFile(sourceFile,filename);
   SetTextBuf(sourceFile,buf); // will speed up reading
   Reset(sourceFile);
  {$I-} // if we reached here, the file is existing
   while NOT EOF(sourceFile) do
   begin ReadLn(sourceFile,line);
            fields.loadFromCommaLine(line);
            // process the fields of this record
   end;
   {$I+}
   closeFile(sourceFile);
   fields.free;
 end;

 

默认情况下,缓冲区为128字节,这非常小,并且会经常调用Windows文件API:这是较慢的部分。

仅使用64 KB即可大大提高速度。ReadLn()函数速度很快,尤其是当您的行少于256个字节时。

如果要随机访问文件内容,可以通过“内存映射”窗口读取文件。

它非常快速且方便,但是在32位处理下,您将无法一次映射3GB的文件(根据我的实验,最多可以映射500 MB或更少,具体取决于您当前的内存使用情况) 。因此,您必须使用“窗口”,该窗口有意在文件上滑动。

相关阅读 >>

Delphi 进程隐藏的若干方法

Delphi 无dll版下载者

Delphi 判断是否是系统管理员身份

Delphi 使用google translate实现tts

Delphi android应用程序中的java ui线程中执行处理

Delphi 配置驱动程序(firedac)

Delphi 如何在toolbar中的toolbutton上显示文字

Delphi字符串加密解密

Delphi 读取图像文件base64编码加载到image组件显示图片

Delphi 查看内存数据的函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...