1
64
如果您在一个Unix环境中,您可以
它不会将整个文件加载到内存中;因为它针对流式文件进行了优化,并且对字/行进行了计数,所以性能足够好,而不是自己用Ruby流式处理文件。 SSCCE:
或者,如果希望在命令行上传递一组文件:
|
2
72
一次读取一行文件:
或perl
或
会比
|
3
13
不管使用什么语言,如果行的长度可变,就必须读取整个文件。这是因为换行符可以在任何地方,如果不读取文件(假设文件没有缓存,一般来说不是缓存文件),就无法知道。 如果你想指出进展,你有两个现实的选择。可以根据假定的线条长度推断进度:
因为你知道文件的大小。或者,您可以将进度测量为:
这就足够了。 |
4
11
使用红宝石:
比325.477行文件中的wc-l快39毫秒 |
5
7
已发布解决方案的摘要
807802行文件:
|
6
3
与DJ的答案相同,但给出了实际的Ruby代码:
第一部分
给你
这个
|
7
2
出于我不完全理解的原因,扫描文件以查找换行符
以下基准使用了一个包含1045574行数据和4列的csv文件:
基准的代码如下:
如您所见,扫描文件换行速度快了一个数量级。 |
8
2
我有一个衬里。
|
9
1
如果文件是一个csv文件,那么如果文件的内容是数字,那么记录的长度应该相当一致。将文件的大小除以记录的长度或前100条记录的平均值是否有意义? |
10
1
如最初所示 Shugo Maeda . 例子:
|
11
1
超过135K条线路的测试结果如下所示。 这是我的基准代码。
结果是
这个
所以,我建议当你数到多于一行的时候打电话给wc。 |
12
0
对于Unix样式的文本文件,它非常简单
就是这样。对于MS Windows文本文件,您必须检查 一个由“r\n”而不是“n”组成的序列,但不多 更难。对于Mac OS经典文本文件(与 Mac OS X),您将检查“r”而不是“n”。 所以,是的,这看起来像C。那又怎样?C棒极了,Ruby棒极了 太棒了,因为当C答案最简单的时候,这就是你能做到的。 希望您的Ruby代码看起来像。希望你的Dain没有 已经被爪哇肆虐了。
顺便说一下,请不要考虑上面的任何答案
使用
不要试图得到更多的“面向对象”的情况 呼吁。这是一个令人尴尬的陷阱,为那些想看 比实际情况更复杂。你应该永远高兴 当答案真的很简单,而不是 当没有复杂的事情给你机会时,你会很失望 写“令人印象深刻的”代码。但是如果你想看起来 “面向对象”并且不介意将整行内容 一次记忆(也就是说,你知道线路足够短),你 可以做到这一点
这将是一个很好的折中方案,但前提是线路不太合适。 在这种情况下,它可能比我的第一个运行得更快。 解决方案。 |
13
0
使用
使用
|
14
-2
您只能读取最后一行并查看其编号:
|
Stilian · 存储库设置中没有Github页面部分 2 年前 |
Kellen · 查看$卷展栏功能列表 2 年前 |
Akshit Thakur Ak · 我怎样才能把铁轨停下来? 2 年前 |
johncssjs · 将数组转换为每个元素的嵌套哈希 2 年前 |
solidsnake99 · Rails db:如何绕过验证 2 年前 |