#!/usr/bin/perl

$site=shift;
$tmpdir="/tmp/$$";

open(W,"mkdir $tmpdir; cd $tmpdir; wget -m $site 2>&1 |") || die;

$last_time=undef;
while(<W>) {
    if(/--(..):(..):(..)--  http:/) {
	$h=$1;$m=$2;$s=$3;
	$secs=$h*3600+$m*60+$s;
	if($last_time) {
	    push(@timing,$secs-$last_time);
	}
	$last_time=$secs;
    }
    @timing and 
    print ("Median:  ",median(@timing),"\n",
	   "Min:     ",min(@timing),"\n",
	   "Max:     ",max(@timing),"\n",
	   "98th:    ",percentile(98,@timing),"\n",
	   "Average: ",average(@timing),"\n");
}
print ("Median:  ",median(@timing),"\n",
       "Min:     ",min(@timing),"\n",
       "Max:     ",max(@timing),"\n",
       "98th:    ",percentile(98,@timing),"\n",
       "Average: ",average(@timing),"\n");

sub median {
    return percentile(50,@_);
}

sub max {
    return percentile(100,@_);
}

sub min {
    return percentile(0,@_);
}

sub percentile {
    my $pct = shift;
    my @v= sort { $a <=> $b } @_;
    return $v[$#v*$pct/100]
#    my $med;
#    if($#v % 2) {
#	# even number elements
#	# use average middle 2
#	$med = ($v[$#v/2-0.5] + $v[$#v/2+0.5])/2;
#    } else {
#	$med = $v[$#v/2];
#    }
#    return $med;
}


sub average {
    my $sum=0;
    my $nr=$#_+1;
    foreach(@_) {
	$sum+=$_;
    }
    return $sum/$nr;
}
