我有一个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)))];
这显然是将所有值预先保存在数组中,然后计算百分位数,对于内存来说可能较重(假设有数百万个值),是否有更节省内存的方法?
while
可以更容易理解为$i++ while $window[$i] < $_ and $i < $#window
(这是否等效?)。 - amonchomp @window
和简化的循环。改变测试顺序导致警告大幅减少。 - amon