---
title: "Best strategy"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Best strategy}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
For high number of randomization and number of weights, the multiprocessing
strategy is faster.
But for low randomization numbers and number of weights, prefer sequential
processing for better performances.
```{r test best strat}
## increase the randomization_number to at least 1000 to have
## better results
## our analysis parameters:
tad_analysis_parameter <- list(
weights = TAD::AB[, c(5:102)],
weights_factor = TAD::AB[, c("Year", "Plot", "Treatment", "Bloc")],
trait_data = log(TAD::trait[["SLA"]]),
aggregation_factor_name = c("Year", "Bloc"),
statistics_factor_name = c("Treatment"),
regenerate_abundance_df = TRUE,
regenerate_weighted_moments_df = TRUE,
regenerate_stat_per_obs_df = TRUE,
regenerate_stat_per_rand_df = TRUE,
seed = 1312,
significativity_threshold = c(0.05, 0.95)
)
## We will try different strategies, with different number of randomisations
## with a fixed number of weights (98)
strategies <- list(
sequencial = future::sequential,
multisession = future::multisession
)
results_string <- list()
## We run the TAD with 10 and then with 1000 randomisations, with
## multiprocessing and without multiprocessing to see the difference
for (randomization_number in c(10, 1000)) {
tad_analysis_parameter$randomization_number <- randomization_number
for (strat in names(strategies)) {
## We set the strategy
future::plan(strategies[[strat]])
time_before <- proc.time()[[1]]
do.call(TAD::launch_analysis_tad, tad_analysis_parameter)
ellapsed_time <- proc.time()[[1]] - time_before
results_string[[length(results_string) + 1]] <- sprintf(
"[%s rand - %12s] The TAD Analysis took %s seconds.",
as.character(randomization_number),
as.character(strat),
as.character(ellapsed_time)
)
}
## Always reset the strategy to sequential after your processing
future::plan(future::sequential)
}
cat(paste(results_string, collapse = "\n"), "\n")
```