% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/benchmark-performance.R
\name{benchmark_performance}
\alias{benchmark_performance}
\title{Run the soilKey performance benchmark}
\usage{
benchmark_performance(
  n = 100L,
  systems = c("wrb2022", "sibcs", "usda"),
  include_familia = FALSE,
  seed = 42L,
  verbose = TRUE
)
}
\arguments{
\item{n}{Integer. Number of synthetic pedons to generate.
Default 100; pass 1000 or higher for batch-level
measurements.}

\item{systems}{Character vector. Which classifiers to time.
Default \code{c("wrb2022", "sibcs", "usda")} (all three).}

\item{include_familia}{Pass-through to \code{classify_sibcs}
when \code{"sibcs"} is in \code{systems}. Default
\code{FALSE}.}

\item{seed}{Integer applied through \code{\link[withr]{with_seed}}
so the synthetic pedon pool is reproducible \emph{without}
mutating the caller's global RNG state. Pass \code{NULL} to
leave the RNG stream untouched. Default \code{42L} preserves
the bit-for-bit-identical pool earlier soilKey releases
produced (CRAN policy: never call \code{set.seed()} on the
caller's RNG).}

\item{verbose}{If \code{TRUE} (default), prints a per-system
summary line.}
}
\value{
A list with elements:
  \describe{
    \item{\code{summary}}{data.frame: \code{system, n_pedons,
          total_seconds, mean_seconds, median_seconds,
          pedons_per_minute}.}
    \item{\code{per_pedon}}{data.frame with one row per
          (pedon, system) call: \code{i, system,
          seconds, status}.}
    \item{\code{config}}{list with \code{n}, \code{seed},
          \code{soilKey_version}, \code{R_version},
          \code{platform}.}
  }
}
\description{
Generates \code{n} synthetic pedons (5 horizons each, with the
chemistry / morphology populated for typical Argissolo /
Latossolo / Cambissolo cases), calls each classifier on each
pedon, and reports per-call latency + total throughput.
}
\details{
Designed to be a one-shot reproducible benchmark: the synthetic
pedons use a fixed RNG seed so timings on the same machine are
comparable across releases.
}
\examples{
\donttest{
bench <- benchmark_performance(n = 5)
bench$summary
}
}
