-
Notifications
You must be signed in to change notification settings - Fork 1
/
benchmark.R
69 lines (52 loc) · 2.5 KB
/
benchmark.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#=# Fichier pour les benchmaks : test de rapidité des calculs
## Setup des script
rm(list=ls()) # on vide la memoire de RStudio
setwd("~/Documents/Projets R/RnGameDataExploitation-modularite") #choix du dossier ou se trouve le script Rythma
# Installation (si besoin) et chargement des packages requis
packages <- c("ggplot2", "gridExtra","RColorBrewer","treemapify","dplyr","microbenchmark","data.table")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}
# chargement auto de tout les packages (evite q'un package manque a l'appel)
for(package in packages){
library(package,character.only = T,warn.conflicts = F)
}
source("RScripts/RythmaFUNZIP5.4.R") #charge la fonction d'analyse
## Setup du benchmark
# Dossier ou sont les données pour le benchmark
BENCHDIR <- "Benchmark"
benchFiles <- list.files(path = BENCHDIR,pattern = ".zip")
l <- length(benchFiles)
# chargement d'une sauvegarde si elle existe sinon création d'un substitu
if (file.exists("benchmark.csv")){
benchSave <- read.csv2("benchmark.csv",as.is = F)[,-1]
print("Les test suivant ont été importé, vous pouvez les override en re créant un test avec le même nom")
print(levels(benchSave$Name))
} else{
benchSave <- data.frame("Name"=factor(),"File"=factor(),"min"=numeric(),"mean"=numeric(),"max"=numeric(),"sd"=numeric(),"incertitude"=numeric())
}
# Choix du nom du test
testName <- readline( prompt = "nom du test :")
# Benchmark
# duree typique en 5 et 10 min
bench <- NULL
for (i in 1:l){
bench <- rbind(bench,microbenchmark(Rythmanalyse(benchFiles[i],graph = FALSE,data.dir=BENCHDIR)))
levels(bench$expr)[i]<-benchFiles[i]
}
# agrégation des données pour une forme plus facilement sauvegardable
benchData <- data.frame("Name"=factor(testName),"File"=factor(benchFiles),"min"=numeric(l),"mean"=numeric(l),"max"=numeric(l),"sd"=numeric(l),"incertitude"=numeric(l))
#unité du temps dans le csv : ms
for (i in 1:l){
sub <- subset(bench,expr == levels(bench$expr)[i])
sub$time <- sub$time / 1000000
benchData$min[i] <- min(sub$time)
benchData$mean[i] <- mean(sub$time)
benchData$max[i] <- max(sub$time)
benchData$sd[i] <- sd(sub$time)
benchData$incertitude[i] <- benchData$sd[i]/sqrt(length(sub$time -1)) * 1.66
}
# on suprime l'ancien test portant le même nom s'il existe après que tout ce soit bien passer puis on écrit
benchSave <- benchSave[benchSave$Name != testName,]
benchSave <- rbind(benchSave,benchData)
write.csv2(benchSave,"benchmark.csv")