diff --git a/bin/r/stats.r b/bin/r/stats.r
index a40883e76535be0cd7bb615f5c9d20d2dc3c9537..d01559753ab8d068cc495c97505473ecd0ae8053 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 0000000000000000000000000000000000000000..7abb7c56a379b31f94d39a8b38a20ab11a4e99d9
--- /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 0000000000000000000000000000000000000000..bd136daf39d52f0e86fd82ded57be053b2c6596a
--- /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 0000000000000000000000000000000000000000..caef9015b35193780bde9774c41f60fbd79e360f
--- /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())