我有一个 perl 脚本,它通过几个演出文件并生成一个报告。
为了计算百分位数,我正在执行以下操作
my @values = 0;
while (my $line = <INPUTFILE>){
.....
push(@values, $line);
}
# Sort
@values = sort {$a <=> $b} @values;
# Print 95% percentile
print $values[sprintf("%.0f",(0.95*($#values)))];
Run Code Online (Sandbox Code Playgroud)
这显然将所有值预先保存在数组中,然后计算百分位数,这可能会占用大量内存(假设有数百万个值),是否有更高效的内存方法?