Each system is characterized by its CPU type, the operating system type and the mkin version. Currently only values for one system are available.
cpu_model <- benchmarkme::get_cpu()$model_name
operating_system <- Sys.info()[["sysname"]]
mkin_version <- as.character(packageVersion("mkin"))
system_string <- paste0(operating_system, ", ", cpu_model, ", mkin version ", mkin_version)
load("~/git/mkin/vignettes/web_only/mkin_benchmarks.rda")
mkin_benchmarks[system_string, c("CPU", "OS", "mkin")] <-
c(cpu_model, operating_system, mkin_version)
if (mkin_version > "0.9.48.1") {
mmkin_bench <- function(models, datasets, error_model = "const") {
mmkin(models, datasets, error_model = error_model, cores = 1, quiet = TRUE)
}
} else {
mmkin_bench <- function(models, datasets, error_model = NULL) {
mmkin(models, datasets, reweight.method = error_model, cores = 1, quiet = TRUE)
}
}
Parent only:
FOCUS_C <- FOCUS_2006_C
FOCUS_D <- subset(FOCUS_2006_D, value != 0)
parent_datasets <- list(FOCUS_C, FOCUS_D)
t1 <- system.time(mmkin_bench(c("SFO", "FOMC", "DFOP", "HS"), parent_datasets))[["elapsed"]]
t2 <- system.time(mmkin_bench(c("SFO", "FOMC", "DFOP", "HS"), parent_datasets,
error_model = "tc"))[["elapsed"]]
One metabolite:
SFO_SFO <- mkinmod(
parent = mkinsub("SFO", "m1"),
m1 = mkinsub("SFO"))
## Successfully compiled differential equation model from auto-generated C code.
FOMC_SFO <- mkinmod(
parent = mkinsub("FOMC", "m1"),
m1 = mkinsub("SFO"))
## Successfully compiled differential equation model from auto-generated C code.
DFOP_SFO <- mkinmod(
parent = mkinsub("FOMC", "m1"),
m1 = mkinsub("SFO"))
## Successfully compiled differential equation model from auto-generated C code.
t3 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D)))[["elapsed"]]
t4 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D),
error_model = "tc"))[["elapsed"]]
t5 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D),
error_model = "obs"))[["elapsed"]]
Two metabolites, synthetic data:
m_synth_SFO_lin <- mkinmod(parent = mkinsub("SFO", "M1"),
M1 = mkinsub("SFO", "M2"),
M2 = mkinsub("SFO"),
use_of_ff = "max", quiet = TRUE)
m_synth_DFOP_par <- mkinmod(parent = mkinsub("DFOP", c("M1", "M2")),
M1 = mkinsub("SFO"),
M2 = mkinsub("SFO"),
use_of_ff = "max", quiet = TRUE)
SFO_lin_a <- synthetic_data_for_UBA_2014[[1]]$data
DFOP_par_c <- synthetic_data_for_UBA_2014[[12]]$data
t6 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a)))["elapsed"]
t7 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c)))["elapsed"]
t8 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a),
error_model = "tc"))["elapsed"]
t9 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c),
error_model = "tc"))["elapsed"]
t10 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a),
error_model = "obs"))["elapsed"]
t11 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c),
error_model = "obs"))["elapsed"]
mkin_benchmarks[system_string, paste0("t", 1:11)] <-
c(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)
save(mkin_benchmarks, file = "~/git/mkin/vignettes/web_only/mkin_benchmarks.rda")
Currently, we only have benchmark information on one system, therefore only the mkin version is shown with the results below. Timings are in seconds, shorter is better.
Benchmarks for all available error models are shown.
Constant variance and two-component error model:
print(mkin_benchmarks[, c("mkin", "t1", "t2")], row.names = FALSE)
## mkin t1 t2
## 0.9.48.1 3.610 11.019
## 0.9.49.1 8.184 22.889
## 0.9.49.2 7.064 12.558
## 0.9.49.3 7.296 21.239
## 0.9.49.4 5.936 20.545
## 0.9.50.2 1.547 3.955
Constant variance, variance by variable and two-component error model:
print(mkin_benchmarks[, c("mkin", "t3", "t4", "t5")], row.names = FALSE)
## mkin t3 t4 t5
## 0.9.48.1 3.764 14.347 9.495
## 0.9.49.1 4.649 13.789 6.395
## 0.9.49.2 4.786 8.461 5.675
## 0.9.49.3 4.510 13.805 7.386
## 0.9.49.4 4.446 15.335 6.002
## 0.9.50.2 1.379 6.176 2.713
Two different datasets, for each constant variance, variance by variable and two-component error model are shown:
print(mkin_benchmarks[, c("mkin", paste0("t", 6:11))], row.names = FALSE)
## mkin t6 t7 t8 t9 t10 t11
## 0.9.48.1 2.623 4.587 7.525 16.621 8.576 31.267
## 0.9.49.1 2.542 4.128 4.632 8.171 3.676 5.636
## 0.9.49.2 2.723 4.478 4.862 7.618 3.579 5.574
## 0.9.49.3 2.643 4.374 7.02 11.124 5.388 7.365
## 0.9.49.4 2.635 4.259 4.737 7.763 3.427 5.626
## 0.9.50.2 0.742 1.202 1.269 2.97 2.028 2.959