1library(dplyr) 2library(reshape2) 3library(ggplot2) 4 5res = readLines("benchmark_res.txt") 6header = c("Size", "Dataset", "F77time", "F77err", "F77nops", "Cpptime", "Cpperr", "Cppnops") 7 8## Benchmark result for symmetric solver 9sym_start = grep("eigs_sym", res) + 4 10sym_end = grep("========", res)[2] - 1 11sym_dat = strsplit(res[sym_start:sym_end], " ") 12sym_dat = lapply(sym_dat, function(x) as.numeric(x[x != ""])) 13sym_dat = as.data.frame(do.call(rbind, sym_dat)) 14colnames(sym_dat) = header 15 16sym_medtime = sym_dat %>% 17 select(Size, Dataset, F77time, Cpptime) %>% 18 melt(id.vars = c("Size", "Dataset"), 19 variable.name = "Package", value.name = "Time") %>% 20 group_by(Size, Dataset, Package) %>% 21 summarize(Medtime = median(Time)) %>% 22 mutate(Package = ifelse(grepl("F77", Package), "ARPACK", "Spectra")) 23 24sym_medtime$Size = paste("Matrix size:", sym_medtime$Size) 25 26ggplot(sym_medtime, aes(x = factor(Dataset), y = Medtime)) + 27 geom_bar(aes(fill = Package), width = 0.75, position = "dodge", stat = "identity") + 28 facet_wrap(~ Size, scales = "free", ncol = 2) + 29 xlab("Matrix ID") + ylab("Median Elapsed Time (ms)") + 30 ggtitle("Symmetric Eigen Solver") + 31 theme_bw(base_size = 20) + 32 theme(plot.title = element_text(hjust = 0.5)) 33 34## Benchmark result for general solver 35gen_start = grep("eigs_gen", res) + 4 36gen_end = grep("========", res)[4] - 1 37gen_dat = strsplit(res[gen_start:gen_end], " ") 38gen_dat = lapply(gen_dat, function(x) as.numeric(x[x != ""])) 39gen_dat = as.data.frame(do.call(rbind, gen_dat)) 40colnames(gen_dat) = header 41 42gen_medtime = gen_dat %>% 43 select(Size, Dataset, F77time, Cpptime) %>% 44 melt(id.vars = c("Size", "Dataset"), 45 variable.name = "Package", value.name = "Time") %>% 46 group_by(Size, Dataset, Package) %>% 47 summarize(Medtime = median(Time)) %>% 48 mutate(Package = ifelse(grepl("F77", Package), "ARPACK", "Spectra")) 49 50gen_medtime$Size = paste("Matrix size:", gen_medtime$Size) 51 52ggplot(gen_medtime, aes(x = factor(Dataset), y = Medtime)) + 53 geom_bar(aes(fill = Package), width = 0.75, position = "dodge", stat = "identity") + 54 facet_wrap(~ Size, scales = "free", ncol = 2) + 55 xlab("Matrix ID") + ylab("Median Elapsed Time (ms)") + 56 ggtitle("General Eigen Solver") + 57 theme_bw(base_size = 20) + 58 theme(plot.title = element_text(hjust = 0.5)) 59