数组与文件的Perl使用
考虑到对性能/所用时间等的影响,以下哪项是编写代码的更好方法- (以下是一段伪代码,请忽略语法问题。这里的想法是了解在什么情况下使用数组和文件) 案例1:数组与文件的Perl使用,perl,Perl,考虑到对性能/所用时间等的影响,以下哪项是编写代码的更好方法- (以下是一段伪代码,请忽略语法问题。这里的想法是了解在什么情况下使用数组和文件) 案例1: @array; # globally accessible sub 1 { #some operations on @array } . . . sub 2 { #print @array info } 案例2::#使用文件而不是数组 sub 1 { #open file1 #write to file1
@array; # globally accessible
sub 1 {
#some operations on @array
}
.
.
.
sub 2 {
#print @array info
}
案例2::#使用文件而不是数组
sub 1 {
#open file1
#write to file1
#close file
}
.
.
.
sub 2 {
#open file1
#read file1
#print file1 info
#close file1
}
这取决于你在潜艇里要做什么
第一个示例在给定的形式中没有意义(请对数组执行某些操作!您需要具体说明)
如果您从开始到结束按顺序处理内容,那么使用文件迭代器而不是将其读入内存是有意义的,因为这样,您就不会使用太多的系统内存,perls缓冲将以相对高效的方式处理文件读取
除非无法避免,否则应始终逐行处理文件
只要您需要在行之间来回移动,并在文件中向后跳转,那么第一种将整个文件读入内存的方法将使算法更易于编写(以牺牲一些系统内存为代价)
如果系统内存不足,您可以用一点时间来换取内存,请看一看,它可以让您像访问内存中的阵列一样访问磁盘上的文件。@Pri-一般来说:RAM操作(因此-阵列)总是比I/O操作(文件)快得多。注意:
@array代码>不是一个声明。它也不是全球性的。如果没有strict,它会创建一个包变量,但它不会在运行时真正声明它,就像my
或our
那样。您不能命名sub1
或2
。最好避免使用Tie::File,尤其是当您有内存问题时。这是一个巨大的记忆猪。您可能很容易使用比文件大小更多的内存@ikegami您可以建议使用什么模块来处理文件?我首先会努力避免出现这种情况(例如,通过重新排序数据、将数据加载到数据库中等)。