155714Skris#!/usr/local/bin/perl 255714Skris# 355714Skris# This file takes as input, the files that have been output from 455714Skris# ssleay speed. 555714Skris# It prints a table of the relative differences with %100 being 'no difference' 655714Skris# 755714Skris 855714Skris($#ARGV == 1) || die "$0 speedout1 speedout2\n"; 955714Skris 1055714Skris%one=&loadfile($ARGV[0]); 1155714Skris%two=&loadfile($ARGV[1]); 1255714Skris 1355714Skris$line=0; 1468651Skrisforeach $a ("md2","md4","md5","sha","sha1","rc4","des cfb","des cbc","des ede3", 1555714Skris "idea cfb","idea cbc","rc2 cfb","rc2 cbc","blowfish cbc","cast cbc") 1655714Skris { 1755714Skris if (defined($one{$a,8}) && defined($two{$a,8})) 1855714Skris { 1955714Skris print "type 8 byte% 64 byte% 256 byte% 1024 byte% 8192 byte%\n" 2055714Skris unless $line; 2155714Skris $line++; 2255714Skris printf "%-12s ",$a; 2355714Skris foreach $b (8,64,256,1024,8192) 2455714Skris { 2555714Skris $r=$two{$a,$b}/$one{$a,$b}*100; 2655714Skris printf "%12.2f",$r; 2755714Skris } 2855714Skris print "\n"; 2955714Skris } 3055714Skris } 3155714Skris 3255714Skrisforeach $a ( 3355714Skris "rsa 512","rsa 1024","rsa 2048","rsa 4096", 3455714Skris "dsa 512","dsa 1024","dsa 2048", 3555714Skris ) 3655714Skris { 3755714Skris if (defined($one{$a,1}) && defined($two{$a,1})) 3855714Skris { 3955714Skris $r1=($one{$a,1}/$two{$a,1})*100; 4055714Skris $r2=($one{$a,2}/$two{$a,2})*100; 4155714Skris printf "$a bits %% %6.2f %% %6.2f\n",$r1,$r2; 4255714Skris } 4355714Skris } 4455714Skris 4555714Skrissub loadfile 4655714Skris { 4755714Skris local($file)=@_; 4855714Skris local($_,%ret); 4955714Skris 5055714Skris open(IN,"<$file") || die "unable to open '$file' for input\n"; 5155714Skris $header=1; 5255714Skris while (<IN>) 5355714Skris { 5455714Skris $header=0 if /^[dr]sa/; 5555714Skris if (/^type/) { $header=0; next; } 5655714Skris next if $header; 5755714Skris chop; 5855714Skris @a=split; 5955714Skris if ($a[0] =~ /^[dr]sa$/) 6055714Skris { 6155714Skris ($n,$t1,$t2)=($_ =~ /^([dr]sa\s+\d+)\s+bits\s+([.\d]+)s\s+([.\d]+)/); 6255714Skris $ret{$n,1}=$t1; 6355714Skris $ret{$n,2}=$t2; 6455714Skris } 6555714Skris else 6655714Skris { 6755714Skris $n=join(' ',grep(/[^k]$/,@a)); 6855714Skris @k=grep(s/k$//,@a); 6955714Skris 7055714Skris $ret{$n, 8}=$k[0]; 7155714Skris $ret{$n, 64}=$k[1]; 7255714Skris $ret{$n, 256}=$k[2]; 7355714Skris $ret{$n,1024}=$k[3]; 7455714Skris $ret{$n,8192}=$k[4]; 7555714Skris } 7655714Skris } 7755714Skris close(IN); 7855714Skris return(%ret); 7955714Skris } 8055714Skris 81