#!/bin/bash ecode=0 FAILED="" if test -z "${OPTIONS}";then OPTIONS="sha1 sha256 sha384 sha256-new sha1-one" fi echo "Running for: $OPTIONS" TIME=ns function plot() { hash=$1 R --no-save <<_EOF_ #plot require(lattice) z=read.csv("out-$hash.txt", header=TRUE); options(scipen=999) m <- matrix(ncol=3,nrow=256) png(filename = "$hash-density.png",width=3072,height=4096,units="px",bg="white"); d <- density(unlist(z[1,])); plot(d, ylab="Delta", xlab="${TIME}", col="red", main=sprintf("estimated PDF for %d", 1)); for (row in c(4,72,253,256)){ lines(density(unlist(z[row,])), col = sample(colours(), 5)); } dev.off(); colnames(m) <- c("Delta","TimeMedian","TimeAverage") for (row in 1:256){ v=tail(z[row,], length(z[row,])-1) m[row,][1] = unlist(z[row,][1]); m[row,][2] = median(unlist(v)); m[row,][3] = mean(unlist(v)); } png(filename = "$hash-timings-med.png",width=1024,height=1024,units="px",bg="white"); plot(m[,1],m[,2],xlab="Delta",ylab="Median timings (${TIME})"); dev.off(); png(filename = "$hash-timings-ave.png",width=1024,height=1024,units="px",bg="white"); plot(m[,1],m[,3],xlab="Delta",ylab="Average timings (${TIME})"); dev.off(); estatus=0; for (row in 2:256){ v=ks.test(unlist(z[1,]),unlist(z[row,])); p = 0.05/255 if (v[2] < p) { print (row); print (v[2]); estatus=1; } } q(status=estatus); _EOF_ if test $? != 0;then echo "*** Failed test for $hash" FAILED="${FAILED} $hash" ecode=1 fi } for hash in ${OPTIONS};do if ! test -f out-$hash.txt;then ./mini-record-timing $hash fi plot $hash done echo "Failed: ${FAILED}" exit $ecode