Take the past recorded runtimes times from build_times() and use them to predict how the targets will be distributed among the available workers in the next make(). Then, predict the overall runtime to be the runtime of the slowest (busiest) workers. Predictions only include the time it takes to run the targets, not overhead/preprocessing from drake itself.

  targets_predict = NULL,
  from_scratch = FALSE,
  targets_only = NULL,
  jobs_predict = 1L,
  known_times = numeric(0),
  default_time = 0,
  warn = TRUE,
  config = NULL



Arguments to make(), such as plan and targets.


Character vector, names of targets to include in the total runtime and worker predictions.


Logical, whether to predict a make() build from scratch or to take into account the fact that some targets may be already up to date and therefore skipped.




The jobs argument of your next planned make().


A named numeric vector with targets/imports as names and values as hypothetical runtimes in seconds. Use this argument to overwrite any of the existing build times or the default_time.


Number of seconds to assume for any target or import with no recorded runtime (from build_times()) or anything in known_times.


Logical, whether to warn the user about any targets with no available runtime, either in known_times or build_times(). The times for these targets default to default_time.




Predicted total runtime of the next call to make().

See also


if (FALSE) { isolate_example("Quarantine side effects.", { if (suppressWarnings(require("knitr"))) { load_mtcars_example() # Get the code with drake_example("mtcars"). make(my_plan) # Run the project, build the targets. known_times <- rep(7200, nrow(my_plan)) names(known_times) <- my_plan$target known_times # Predict the runtime if (requireNamespace("lubridate", quietly = TRUE)) { predict_runtime( my_plan, jobs_predict = 7L, from_scratch = TRUE, known_times = known_times ) predict_runtime( my_plan, jobs_predict = 8L, from_scratch = TRUE, known_times = known_times ) balance <- predict_workers( my_plan, jobs_predict = 7L, from_scratch = TRUE, known_times = known_times ) balance } } }) }