【发布时间】:2014-04-22 16:39:00
【问题描述】:
我正在使用 delphi 读取非常宽的文件
文件以逗号分隔,大部分时间都花在解析字符串上。
逻辑如下
- 打开文件
- 读线
- 将行拆分为记录数组
- 将 spitted 数组传递给下一个过程
- 转到第 2 步
- 关闭文件。
我想并行运行第 3 步,目前正在查看 OmniThreadLibrary。
最好的方法是什么?
我应该使用 Parallel For 吗?胡椒烯?还是排队?
我正在考虑使用“Parallel For”,但问题是我不知道文件有多少行
【问题讨论】:
-
您应该问自己几个问题:1) 您的程序能否处理文件中“乱序”处理的行? 2)您对拆分数组的处理是否涉及任何 UI 更新,还是纯粹的数据更新? 3) 是什么让您认为开始运行多线程会更好/更快?记住,你会在你的程序之上增加一个很大的复杂性,如果速度提升没有得到回报,你最终会得到一个难以维护的程序,它不会比它好多少(如果有的话)单线程版本...
-
1.乱序没问题 2. 只更新数据 3. 逐行读取文件不解析需要1分钟,解析需要20分钟(文件很宽)