更快速地在perl中逐行读取文件

时间:2018-04-11 06:44:12

标签: perl

我必须使用perl逐行读取一个大的unix文件。如果是大文件,脚本运行时间超过2分钟,但是对于小文件则需要较少的时间。

我正在使用以下代码:

function preview() {
  var vName = document.getElementById("name").value;
  var vage = document.getElementById("age").value;
  var vplace = document.getElementById("place").value;

  var preview = document.getElementById("preview")
  preview.innerHTML = 'Name:' + vName + '<br /> Age:' + vage + '<br /> Place: ' + vplace + '<br />';
  var reset = document.getElementById("reset");
  reset.style.display = "initial";
  var submit = document.getElementById("submit")
  submit.style.display = "initial";
  reset.onclick = () => {
    preview.innerHTML = "";
    reset.style.display = "none";
    submit.style.display = "none";
  };
}

请让我知道一种更快地解析文件的方法

2 个答案:

答案 0 :(得分:5)

“大文件”和“小文件”是什么意思?这些文件的大小是多少?他们有多少行?

除非你的大文件非常庞大,否则看起来减慢你的程序速度的可能不是读取文件,而是你在while循环中所做的事情。为了证明我的错误,你只需要在while循环中运行你的程序,看看它需要多长时间。

假设我是对的,那么你需要弄清楚你的处理部分导致了什么问题。在没有看到代码的情况下,我们显然无法提供任何帮助。但是,Devel::NYTProf这样的工具会很有用。

我不确定你从哪里学过你的Perl,但你用来打开文件的习惯用法已经过时了。这些天我们a)使用词法变量作为文件句柄,b)使用open()的3参数版本和c)始终检查open()的返回值并采取适当的行动。

open(my $fh, '<', 'filename')
  or die "Cannot open 'filename': $!\n";

while ( < $fh > ) {
  ...
}

答案 1 :(得分:0)

如果你有记忆,@ array =&lt; fh&gt;然后通过数组看