-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocess_metrics.R
61 lines (38 loc) · 1.33 KB
/
process_metrics.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
library(jsonlite)
process_app_results <- function(dir) {
files <- list.files(dir, pattern="*.json")
results <- list()
for (f in files) {
fres <- list()
info = strsplit(f, "_")
fres[["dataset"]] <- info[[1]][1]
fres[["run"]] <- info[[1]][2]
metrics = jsonlite::fromJSON(file.path(dir, f))
fres[["time"]] <- metrics[["CustomTotalAnalysisTime"]]
fres[["jsTotalHeapSize"]] <- metrics[["JSHeapTotalSize"]]
fres[["JSHeapUsedSize"]] <- metrics[["JSHeapUsedSize"]]
results[[f]] <- fres
}
as.data.frame(do.call(rbind, lapply(results, as.vector)))
}
process_cli_results <- function(dir) {
dirs <- dir(dir)
results <- list()
for (d in dirs) {
runs <- list.files(file.path(dir, d))
for (r in runs) {
fres <- list()
fres[["dataset"]] <- d
fres[["run"]] <- r
metrics <- readLines(file.path(dir, d, r))
usertime <- metrics[19]
memory <- metrics[27]
fres[["time"]] <- strsplit(usertime, ":")[[1]][2]
fres[["maxResidentSetSize"]] <- strsplit(memory, ":")[[1]][2]
results[[file.path(dir, d, r)]] <- fres
}
}
as.data.frame(do.call(rbind, lapply(results, as.vector)))
}
df_app <- process_app_results("./app-results")
df_cli <- process_cli_results("./cli-results")