我必须使用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";
};
}
请让我知道一种更快地解析文件的方法
答案 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;然后通过数组看