X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f3ae712a1b95294052b6e8136d0f0f2d4b30e6eb..a4c11a23358010a121818afc9333c6e50afa73bb:/contrib/benchmarking_code_block/Rhist.R diff --git a/contrib/benchmarking_code_block/Rhist.R b/contrib/benchmarking_code_block/Rhist.R index 991060e2d2..917be301a8 100644 --- a/contrib/benchmarking_code_block/Rhist.R +++ b/contrib/benchmarking_code_block/Rhist.R @@ -1,36 +1,29 @@ # R script that produces histograms from benchmarked values - # Can be called from the bash script with the following code: # export R_INPUT=$inputfile # export R_OUTPUT=$outputfile # export R_TYPE=$hist_type -# R CMD BATCH $this_script.R -#or -# Rscript $this_script.R +# R CMD BATCH $this_script.R or Rscript $this_script.R -# Use functions from bench.h to benchmark execution time of the desired block, -# then Rhist.R script to read all timings and produce histograms -# and finally inject.h to inject values instead of executing block +# Use functions from bench.h to benchmark execution time of the desired block, then Rhist.R script to read all timings +# and produce histograms and finally inject.h to inject values instead of executing block # This is a small function to help merging empty nbins for dhist histograms -merge_empty_bins <- function (h) -{ +merge_empty_bins <- function (h){ i<-1 j<-1 counts2<--1 breaks2<-h$breaks[1] if (length(h$counts)>1) - for(i in 1:(length(h$counts)-1)) - { - if(h$counts[i]!=0 || h$counts[i+1]!=0) - { - counts2[j]<-h$counts[i] - breaks2[j+1]<-h$breaks[i+1]; - j<-j+1 - } + for(i in 1:(length(h$counts)-1)){ + if(h$counts[i]!=0 || h$counts[i+1]!=0){ + counts2[j]<-h$counts[i] + breaks2[j+1]<-h$breaks[i+1]; + j<-j+1 } + } counts2[j]<-h$counts[length(h$counts)] breaks2[j+1]<-h$breaks[length(h$breaks)] @@ -48,50 +41,39 @@ inputfile<-Sys.getenv("R_INPUT") outputfile<-Sys.getenv("R_OUTPUT") type<-Sys.getenv("R_TYPE") -if (!(type %in% c("mean","default","sturges","scott"))) - { - stop("Wrong histogram type") - } +if (!(type %in% c("mean","default","sturges","scott"))){stop("Wrong histogram type")} df<-read.table(inputfile,header=F) df<-df[,c(1,4)] names(df)<-c("NAME","TIME") attach(df) -for(i in unique(NAME)) -{ +for(i in unique(NAME)){ vector1<-df[NAME==i,2] - - if (length(vector1)==1) - { - #If there is only one element + if (length(vector1)==1){ + #If there is only one element + h<-hist(vector1) # Just for R compatibility reasons + h$breaks<-c(vector1,vector1) + h$counts<-1 + } else { + if (type=="mean"){ + #Mean value only h<-hist(vector1) # Just for R compatibility reasons - h$breaks<-c(vector1,vector1) - h$counts<-1 - } - else - { - if (type=="mean") - { - #Mean value only - h<-hist(vector1) # Just for R compatibility reasons - h$breaks<-c(mean(vector1),mean(vector1)) - h$counts<-length(vector1) - } - else - if (type=="default") - #Standard HISTOGRAM: - h<-hist(vector1) - else - { - #Dhist: - h<-dhist(vector1,nbins=type, plot = FALSE, lab.spikes = FALSE, a=5*iqr(vector1), eps=0.15) - h$breaks<-h$xbr - h$count<-as.vector(h$counts) - h$counts<-h$count - h<-merge_empty_bins(h) - } - } + h$breaks<-c(mean(vector1),mean(vector1)) + h$counts<-length(vector1) + } else + if (type=="default") + #Standard HISTOGRAM: + h<-hist(vector1) + else { + #Dhist: + h<-dhist(vector1,nbins=type, plot = FALSE, lab.spikes = FALSE, a=5*iqr(vector1), eps=0.15) + h$breaks<-h$xbr + h$count<-as.vector(h$counts) + h$counts<-h$count + h<-merge_empty_bins(h) + } + } cat(i, file = outputfile, sep = "\t", append = TRUE) cat("\t", file = outputfile, append = TRUE)