diff options
author | Parménides GV <parmegv@sdf.org> | 2015-06-08 10:49:33 +0200 |
---|---|---|
committer | Parménides GV <parmegv@sdf.org> | 2015-06-08 10:49:33 +0200 |
commit | 471f9a8dba225921cf1a555ad6645305a860c7fb (patch) | |
tree | e2202f0ab72e09467b0d2a15afd8bfafc9b5fae5 /app/lzo/util/table.pl | |
parent | 145332cc9b4e5af62299dedf45c436fedbe05fec (diff) | |
parent | 8d39fbdb4980c95268249f21f3c6b8e36b22cf90 (diff) |
Merge branch 'develop' into release-0.9.4
Diffstat (limited to 'app/lzo/util/table.pl')
-rw-r--r-- | app/lzo/util/table.pl | 360 |
1 files changed, 0 insertions, 360 deletions
diff --git a/app/lzo/util/table.pl b/app/lzo/util/table.pl deleted file mode 100644 index 8b352073..00000000 --- a/app/lzo/util/table.pl +++ /dev/null @@ -1,360 +0,0 @@ -#! /usr/bin/perl -## -## vi:ts=4:et -## -##---------------------------------------------------------------------------## -## -## Author: -## Markus F.X.J. Oberhumer <markus@oberhumer.com> -## -## Description: -## Convert the output of the LZO lzotest program into a nice table. -## -## Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer -## -##---------------------------------------------------------------------------## - -$PROG = $0; -require 'ctime.pl'; - -# -# get options -# - -while ($_ = $ARGV[ $[ ], /^-/) { - shift(@ARGV); - /^--$/ && ($opt_last = 1, last); - - /^--sort=name/ && ($opt_sort_summary_by_name++, next); - /^--sort=ratio/ && ($opt_sort_summary_by_ratio++, next); - /^-s/ && ($opt_summary_only++, next); - /^-t/ && ($opt_clear_time++, next); -} - - -$alg = ''; -$sep = "+" . ("-" x 76) . "+\n"; - -$block_size = -1; - -$n = 0; -@algs = (); -%average = (); -%total = (); - -$lzo_version_string = ''; -$lzo_version_date = ''; - - -# /*********************************************************************** -# // -# ************************************************************************/ - -while (<>) { - - if (/(^|\s)(\d+)\s+block\-size/i) { - if ($block_size < 0) { - $block_size = $2; - &intro($block_size); - } elsif ($block_size != $2) { - die "$PROG: block-size: $block_size != $2\n"; - } - next; - } - - if (/^\s*LZO\s.*library\s+\(v\s*([\w\.\s]+)\s*\,\s*([^\)]+)\)/) { - $lzo_version_string = $1; - $lzo_version_date = $2; - next; - } - - if (/^\s*(\S+(\s+\[\S+\])?)\s*(\|.*\|)\s*$/i) { - if ($1 ne $alg) { - &footer($1); - &header($1); - } - $line = $3; - &stats(*line); - print "$line\n" if (!$opt_summary_only); - } -} -&footer($1); - -&summary(); - -exit(0); - - -# /*********************************************************************** -# // -# ************************************************************************/ - -sub stats { - local (*l) = @_; - local ($x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8); - - if ($l !~ /^\|\s*(.+?)\s+(\d+)\s+(\d+)\s+(\d+)\s+([\d\.]+\s+)?([\d\.]+\s+)?([\d\.]+)\s+([\d\.]+)\s*\|/) { - die $_; - } - - $n++; - - $x1 = $1; $x2 = $2; $x3 = $3; $x4 = $4; - $x5 = ($x2 > 0) ? $x4 * 100.0 / $x2 : 0.0; - $x6 = ($x2 > 0) ? $x4 * 8.0 / $x2 : 0.0; - $x7 = $7; $x8 = $8; - - # convert from kB/s to MB/s (for old versions of lzotest) - if ($x7 =~ /\.\d\d$/) { $x7 = $x7 / 1000.0; } - if ($x8 =~ /\.\d\d$/) { $x8 = $x8 / 1000.0; } - - if ($opt_clear_time) { - $x7 = $x8 = 0.0; - } - - $s[0] += $x2; - $s[1] += $x3; - $s[2] += $x4; - $s[3] += $x5; - $s[4] += $x6; - if ($x7 > 0) { - $s[5] += 1.0 / $x7; $sn[5] += 1; - } - if ($x8 > 0) { - $s[6] += 1.0/ $x8; $sn[6] += 1; - } - - $x1 =~ s/\s+$//; - $l = sprintf("| %-14s %10d %5d %9d %6.1f %5.2f %9.3f %9.3f |", - $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8); -} - - -# /*********************************************************************** -# // -# ************************************************************************/ - -sub header { - local ($t) = @_; - - $alg = $t; - - # reset stats - $n = 0; - @s = (0, 0, 0, 0.0, 0.0, 0.0, 0.0); - @sn = (0, 0, 0, 0, 0, 0, 0); - - return if $opt_summary_only; - - print "\n$alg\n\n"; - print $sep; -print <<EndOfString; -| File Name Length CxB ComLen Ratio% Bits Com MB/s Dec MB/s | -| --------- ------ --- ------ ----- ---- -------- -------- | -EndOfString -} - - -# /*********************************************************************** -# // -# ************************************************************************/ - -sub footer { - local ($t) = @_; - local ($shm5, $shm6); - - return unless $alg; - die if $n <= 0; - die if $s[0] <= 0; - - # harmonic mean - $shm5 = $s[5] > 0 ? $sn[5] / $s[5] : 0.0; - $shm6 = $s[6] > 0 ? $sn[6] / $s[6] : 0.0; - - push(@algs,$alg); - - $average{$alg} = - sprintf("| %-14s %10d %5d %9d %6.1f %5.2f %9.3f %9.3f |\n", - "Average", $s[0]/$n, $s[1]/$n, $s[2]/$n, - $s[3]/$n, $s[4]/$n, - $shm5, $shm6); - - $total{$alg} = - sprintf("| %-14s %10d %5d %9d %6.1f %5.2f %9.3f %9.3f |\n", - "Total", $s[0], $s[1], $s[2], - $s[2]/$s[0]*100, $s[2]/$s[0]*8, - $shm5, $shm6); - - return if $opt_summary_only; - - print $sep; - print $average{$alg}; - print $total{$alg}; - print $sep, "\n"; -} - - -# /*********************************************************************** -# // -# ************************************************************************/ - -$sort_mode = 0; - -sub cmp_by_ratio { - local ($aa, $bb); - - if ($sort_mode == 0) { - $aa = $average{$a}; - $bb = $average{$b}; - } elsif ($sort_mode == 1) { - $aa = $total{$a}; - $bb = $total{$b}; - } else { - die; - } - - ($aa =~ m%^\s*\|\s+\S+\s+\d+\s+\d+\s+\d+\s+(\S+)%) || die; - $aa = $1; - ($bb =~ m%^\s*\|\s+\S+\s+\d+\s+\d+\s+\d+\s+(\S+)%) || die; - $bb = $1; - - # $aa < $bb; - $aa cmp $bb; -} - - -# /*********************************************************************** -# // -# ************************************************************************/ - -sub summary { - local ($l); - local (@k); - - $sort_mode = 0; - if ($opt_sort_summary_by_name) { - @k = sort(@algs); - } elsif ($opt_sort_summary_by_ratio) { - @k = sort(cmp_by_ratio @algs); - } else { - @k = @algs; - } - - print "\n\n"; - print "Summary of average values\n\n"; - print $sep; -print <<EndOfString; -| Algorithm Length CxB ComLen Ratio% Bits Com MB/s Dec MB/s | -| --------- ------ --- ------ ----- ---- -------- -------- | -EndOfString - - for (@k) { - $l = $average{$_}; - $l =~ s/Average[\s]{7}/sprintf("%-14s",$_)/e; - print $l; - } - print $sep; - - - - $sort_mode = 1; - if ($opt_sort_summary_by_name) { - @k = sort(@algs); - } elsif ($opt_sort_summary_by_ratio) { - @k = sort(cmp_by_ratio @algs); - } else { - @k = @algs; - } - - print "\n\n"; - print "Summary of total values\n\n"; - print $sep; -print <<EndOfString; -| Algorithm Length CxB ComLen Ratio% Bits Com MB/s Dec MB/s | -| --------- ------ --- ------ ----- ---- -------- -------- | -EndOfString - - for (@k) { - $l = $total{$_}; - $l =~ s/Total[\s]{9}/sprintf("%-14s",$_)/e; - print $l; - } - print $sep; -} - - -# /*********************************************************************** -# // -# ************************************************************************/ - -sub intro { - local ($bs) = @_; - local ($v, $t, $x); - local ($u, $uname_m, $uname_s, $uname_r); - - $t = &ctime(time); chop($t); - $t = sprintf("%-55s |", $t); - - $v=''; - if ($lzo_version_string) { - $v = $lzo_version_string; - $v .= ', ' . $lzo_version_date if $lzo_version_date; - $v = sprintf("%-55s |", $v); - $v = sprintf("| LZO version : %s\n", $v); - } - - if ($bs % 1024 == 0) { - $x = sprintf("%d (= %d kB)", $bs, $bs / 1024); - } else { - $x = sprintf("%d (= %.3f kB)", $bs, $bs / 1024.0); - } - $x = sprintf("%-55s |", $x); - - $u=''; - if (1 == 1) { - $uname_s = `uname -s`; $uname_s =~ s/^\s+//; $uname_s =~ s/\s+$//; - $uname_r = `uname -r`; $uname_r =~ s/^\s+//; $uname_r =~ s/\s+$//; - $uname_m = `uname -m`; $uname_m =~ s/^\s+//; $uname_m =~ s/\s+$//; - if ($uname_s && $uname_m) { - $u = $uname_s; - $u .= ' ' . $uname_r if $uname_r; - $u .= ' ' . $uname_m; - $u = sprintf("%-55s |", $u); - $u = sprintf("| Operating system : %s\n", $u); - } - } - print <<EndOfString; - -+----------------------------------------------------------------------------+ -| DATA COMPRESSION TEST | -| ===================== | -| Time of run : $t -$v$u| Context length : $x -+----------------------------------------------------------------------------+ - - -Notes: -- CxB is the number of independent blocks a file was splitted -- MB/s is the speed measured in 1,000,000 uncompressed bytes per second -- all averages are calculated from the un-rounded values -- the average ratio & bits are calculated by the arithmetic mean -- the average speed is calculated by the harmonic mean - - -EndOfString -} - -__END__ - - -### insert something like this after 'Time of run': - -| Hardware : Intel Pentium 133, 64 MB RAM, 256 kB Cache | -| Operating system : MS-DOS 7.10, HIMEM.SYS 3.95, DOS/4GW 1.97 | -| Compiler : Watcom C32 10.5 | -| Compiler flags : -mf -5r -oneatx | -| Test suite : Calgary Corpus Suite | -| Files in suite : 14 | -| Timing accuracy : One part in 100 | - - |