+#!/usr/bin/perl
+# Draw spectrum of HTTP transaction lengths from netgrind output
+# (c) 2003 Martin Mares <mj@ucw.cz>, GPL'ed
+
+use strict;
+use warnings;
+use POSIX;
+
+my @k = ( 0, 0.25, 0.5, 1, 2, 4, 8, 16, 32, 64, 1000000000 );
+my @v1 = map { 0 } @k;
+my @v2 = map { 0 } @k;
+
+while (<>) {
+ chomp;
+ /^#/ && next;
+ my ($t1, $t2, $src, $dst, $ffor, $result, $cache, $queue, $length, $totaltime, $waittime, $ctype, $method, $url) = split /\s+/;
+ if ($result =~ /^\d+$/) {
+ my $i = 0;
+ while ($totaltime >= $k[$i+1]) {
+ $i++;
+ }
+ $v1[$i]++;
+ $i = 0;
+ while ($waittime >= $k[$i+1]) {
+ $i++;
+ }
+ $v2[$i]++;
+ }
+}
+
+my $datafile = "gp.tmp";
+open D, ">$datafile" or die;
+for(my $i=0; $i<$#k; $i++) {
+ print D $k[$i], "\t", $v1[$i], "\t", $v2[$i], "\n";
+}
+close D;
+
+open GP, "|gnuplot" or die;
+print GP <<EOF
+set terminal png
+set grid
+set style data boxes
+set title "HTTP Transactions: Length Histogram"
+set xlabel "Delay in seconds"
+set ylabel "Number of transactions"
+set logscale x 2
+plot "$datafile" using 1:2 title "Total time", \\
+ "$datafile" using 1:3 title "Wait time"
+EOF
+;
+close GP;