【发布时间】:2012-05-30 15:37:01
【问题描述】:
我正在解析一个 40MB 的 CSV 文件。
它现在工作得很好,而且很容易解析,我唯一的问题是性能,这当然是相当慢的。
我想知道是否有一种方法可以改进这一点,因为我只需要通过我找到的键找到然后停止循环,所以如果条目位于文件的开头,它会很快完成,但是如果它在最后,则需要一段时间。
我可以通过给它一个随机的起始线来平衡它,但算法仍然是 O(n)...所以我不确定它是否真的值得。
有什么方法可以改进我的顺序解析算法?
【问题讨论】:
-
如果您可以按该键对文件进行排序,则可以使用二进制搜索大大提高速度。
-
首先,对于 CSV 文件来说,40MB 并不是那么大。其次,您目前正在使用的显然需要这么长时间的代码是什么?我不认为它会那么慢,这意味着您要么有不切实际的期望,要么您的代码中存在一些更严重的问题。
-
1 秒?为什么要快于一秒
-
我只是想知道是否有更快的方法,因为我很好奇? :-(
-
为什么不发布您的代码,以便人们提出一些建议。说“我怎样才能让它跑得更快?”不说 IT 是什么,就没有太多可做的事情。