From 2ffd77c8b552cbb7d2ce7cd71c9761baa68b92a7 Mon Sep 17 00:00:00 2001 From: Jan Waller <jwa@informatik.uni-kiel.de> Date: Fri, 25 Oct 2013 19:28:58 +0200 Subject: [PATCH] work on scripts --- bin/r/stats.r | 10 +++++-- bin/r/stats2.r | 31 ++++++++++++++++++++++ bin/r/timeseries-average.r | 53 ++++++++++++++++++++++++++++++++++++++ bin/r/timeseries.r | 44 +++++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 bin/r/stats2.r create mode 100644 bin/r/timeseries-average.r create mode 100644 bin/r/timeseries.r diff --git a/bin/r/stats.r b/bin/r/stats.r index a40883e..d015597 100644 --- a/bin/r/stats.r +++ b/bin/r/stats.r @@ -54,20 +54,26 @@ for (cr in configs.recursion) { for (cr in configs.recursion) { - printvalues = matrix(nrow=5,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%"),c(1:configs.count))) - printthrough = matrix(nrow=5,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%"),c(1:configs.count))) + printvalues = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) + printthrough = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) for (cc in (1:configs.count)) { printvalues["mean",cc]=mean(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])/sqrt(length(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))])) printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))],probs=c(0.25,0.5,0.75)) + printvalues["max",cc]=max(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) + printvalues["min",cc]=min(resultsBIG[(1:length(configs.recursion))[configs.recursion==cr],cc,c(1:(results.count-results.skip))]) printthrough["mean",cc]=mean(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) printthrough["ci95%",cc]=qnorm(0.975)*sd(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]])/sqrt(length(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]])) printthrough[c("md25%","md50%","md75%"),cc]=quantile(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]],probs=c(0.25,0.5,0.75)) + printthrough["max",cc]=max(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) + printthrough["min",cc]=min(throughput[[(1:length(configs.recursion))[configs.recursion==cr],cc]]) } resultstext=formatC(printvalues,format="f",digits=4,width=8) throughtext=formatC(printthrough,format="f",digits=1,width=12) print(resultstext) + print(throughtext) write(paste("Recursion Depth: ", cr),file=outtxt_fn,append=TRUE) + write("response time",file=outtxt_fn,append=TRUE) write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) write("Throughput",file=outtxt_fn,append=TRUE) write.table(throughtext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) diff --git a/bin/r/stats2.r b/bin/r/stats2.r new file mode 100644 index 0000000..7abb7c5 --- /dev/null +++ b/bin/r/stats2.r @@ -0,0 +1,31 @@ +#rm(list=ls(all=TRUE)) +results_fn="tmp/results-benchmark-binary/raw" +outtxt_fn="tmp/results-benchmark-binary/results-text.txt" + +configs.loop=10 +configs.labels=c("No Probe","Inactive Probe","Collecting Data","Writing Data","Reconstructing Data","Reducing Data") +configs.count=length(configs.labels) +results.count=100000000 +results.skip=50000000 + +printvalues = matrix(nrow=7,ncol=configs.count,dimnames=list(c("mean","ci95%","md25%","md50%","md75%","max","min"),c(1:configs.count))) + +cr=10 +for (cc in (1:configs.count)) { + resultsBIG <- c() + for (cl in (1:configs.loop)) { + results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") + results=read.csv2(results_fn_temp,nrows=(results.count-results.skip),skip=results.skip,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),header=FALSE) + resultsBIG <- c(resultsBIG, results[["duration_nsec"]]/(1000)) + rm(results) + } + printvalues["mean",cc]=mean(resultsBIG) + printvalues["ci95%",cc]=qnorm(0.975)*sd(resultsBIG)/sqrt(length(resultsBIG)) + printvalues[c("md25%","md50%","md75%"),cc]=quantile(resultsBIG,probs=c(0.25,0.5,0.75)) + printvalues["max",cc]=max(resultsBIG) + printvalues["min",cc]=min(resultsBIG) +} +resultstext=formatC(printvalues,format="f",digits=4,width=8) +print(resultstext) +write("response time",file=outtxt_fn,append=TRUE) +write.table(resultstext,file=outtxt_fn,append=TRUE,quote=FALSE,sep="\t",col.names=FALSE) diff --git a/bin/r/timeseries-average.r b/bin/r/timeseries-average.r new file mode 100644 index 0000000..bd136da --- /dev/null +++ b/bin/r/timeseries-average.r @@ -0,0 +1,53 @@ +#rm(list=ls(all=TRUE)) +#data_fn="tmp/" +#folder_fn="results-benchmark-binary" +#results_fn=paste(data_fn,folder_fn,"/raw",sep="") +#output_fn=paste(data_fn,folder_fn,"/results-timeseries-avg.pdf",sep="") + +#configs.loop=10 +#configs.recursion=c(10) +#configs.labels=c("Method time (T)","Instrumentation (I)","Collecting (C)","Writing (W)") +#configs.colors=c("black","red","blue","green") +configs.count=length(configs.labels) + +## We assume same amount of data in each category +#results.count=2000000 +buckets.count=1000 +buckets.size=results.count/buckets.count + +## Configure Timeseries +#tsconf.min=0 +#tsconf.max=50 + +pdf(output_fn, width=10, height=6.25, paper="special") + +for (cr in configs.recursion) { + results.ts <- array(dim=c(buckets.count,configs.count)) + if (exists("results.temp")) rm(results.temp) + for (cc in (1:configs.count)) { + results.bucket <- array(dim=c(buckets.count)) + for (cl in (1:configs.loop)) { + results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") + results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) + if (exists("results.temp")) { + results.temp = data.frame(results.temp,results["duration_nsec"]/(1000)) + } else { + results.temp = data.frame(results["duration_nsec"]/(1000)) + } + rm(results,results_fn_temp) + } + results = rowMeans(results.temp) + rm(results.temp) + for (ci in (1:buckets.count)) { + results.bucket[ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size)]) + } + results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) + rm(results,results.bucket) + } + ts.plot(results.ts,gpars=list(ylim=c(tsconf.min,tsconf.max),col=configs.colors,xlab="Number of method executions",axes=FALSE)) + axis(2) + axis(1,at=c(0,buckets.count/4,buckets.count/2,buckets.count*3/4,buckets.count),labels=format(c(0,results.count/4,results.count/2,results.count*3/4,results.count),scientific=FALSE)) + legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean response time of ...",ncol=2) + title(ylab=expression(paste("Mean response time (",mu,"s)"))) +} +invisible(dev.off()) diff --git a/bin/r/timeseries.r b/bin/r/timeseries.r new file mode 100644 index 0000000..caef901 --- /dev/null +++ b/bin/r/timeseries.r @@ -0,0 +1,44 @@ +#rm(list=ls(all=TRUE)) +#data_fn="tmp/" +#folder_fn="results-benchmark-binary" +#results_fn=paste(data_fn,folder_fn,"/raw",sep="") +#output_fn=paste(data_fn,folder_fn,"/results-timeseries.pdf",sep="") + +#configs.loop=10 +#configs.recursion=c(10) +#configs.labels=c("No Probe","Deactivated Probe","Collecting Data","Writing Data") +#configs.colors=c("black","red","blue","green") +configs.count=length(configs.labels) + +## We assume same amount of data in each category +#results.count=2000000 +buckets.count=1000 +buckets.size=results.count/buckets.count + +## Configure Timeseries +#tsconf.min=0 +#tsconf.max=50 + +pdf(output_fn, width=10, height=6.25, paper="special") + +for (cr in configs.recursion) { + for (cl in (1:configs.loop)) { + results.ts <- array(dim=c(buckets.count,configs.count)) + for (cc in (1:configs.count)) { + results.bucket <- array(dim=c(buckets.count)) + results_fn_temp=paste(results_fn, "-", cl, "-", cr, "-", cc, ".csv", sep="") + results=read.csv2(results_fn_temp,quote="",colClasses=c("NULL","numeric"),comment.char="",col.names=c("thread_id","duration_nsec"),nrows=results.count) + results["rt_musec"]=results["duration_nsec"]/(1000) + results$duration_nsec <- NULL + for (ci in (1:buckets.count)) { + results.bucket[ci] <- mean(results[(((ci-1)*buckets.size)+1):(ci*buckets.size),"rt_musec"]) + } + results.ts[,cc]=ts(results.bucket,end=results.count,deltat=buckets.size) + rm(results,results_fn_temp,results.bucket) + } + ts.plot(results.ts,gpars=list(ylim=c(tsconf.min,tsconf.max),col=configs.colors,xlab="Executions")) + legend("topright",inset=c(0.01,0.01),legend=c(rev(configs.labels)),lty="solid",col=rev(configs.colors),bg="white",title="Mean execution time of ...",ncol=2) + title(main=paste("Iteration: ", cl, " Recursion Depth: ", cr),ylab=expression(paste("Execution Time (",mu,"s)"))) + } +} +invisible(dev.off()) -- GitLab