# 最大、最小、レンジ、合計、平均は一撃必殺で算出したい {{tag: perl, cpan}} 数値のリストがあって、なんらか集計をする場合、最大値、最小値、レンジ、合計、平均の5項目は、だいたいベースメントとしてまとめて出力すると思うのです。 だけど、例えば {{cpan: Statistics::Lite}} を使ったりすると、それぞれの値に毎度リストを渡して算出するからもったいない。できれば一撃必殺でやっつけたいですよね。 というわけで書きました。 ## Statistics::Swoop {{cpan: Statistics::Swoop}} 使い方は超簡単です。 use Statistics::Swoop; my $ss = Statistics::Swoop->new([qw/1 2 3 4 5 6 7 8 9 10/]); print $ss->max; # 10 print $ss->min; # 1 print $ss->sum; # 55 print $ss->avg; # 5.5 print $ss->range; # 9 速度的には Statistics::Lite で同じことをやるより 180% くらい速いです。 $ perl demos/benchmark.pl Benchmark: running Lite, Swoop for at least 1 CPU seconds... Lite: 1 wallclock secs ( 1.09 usr + 0.00 sys = 1.09 CPU) @ 110.09/s (n=120) Swoop: 1 wallclock secs ( 1.07 usr + 0.00 sys = 1.07 CPU) @ 313.08/s (n=335) Rate Lite Swoop Lite 110/s -- -65% Swoop 313/s 184% -- benchmark のソースはディストリビューションの demos ディレクトリに入れてあります。