For the complete Mojo documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /docs/manual/basics.md).
Bencher
struct Bencher
Defines a Bencher struct which facilitates the timing of a target function.
Fields
- num_iters (
Int): Number of iterations to run the target function. - elapsed (
Int): The total time elapsed when running the target function.
Implemented traits
AnyType,
ImplicitlyDestructible,
Movable,
RegisterPassable
Methods
__init__
__init__(num_iters: Int) -> Self
Constructs a Bencher object to run and time a function.
Args:
- num_iters (
Int): Number of times to run the target function.
iter
iter[iter_fn: def() capturing -> None](mut self)
Returns the total elapsed time by running a target function a particular number of times.
Parameters:
- iter_fn (
def() capturing -> None): The target function to benchmark.
iter[IterFn: def() -> None](mut self, f: IterFn)
Returns the total elapsed time by running a target closure a particular number of times.
Parameters:
- IterFn (
def() -> None): Type of the closure to benchmark.
Args:
- f (
IterFn): The closure to benchmark.
iter[iter_fn: def() raises capturing -> None](mut self)
Returns the total elapsed time by running a target function a particular number of times.
Parameters:
- iter_fn (
def() raises capturing -> None): The target function to benchmark.
Raises:
If the operation fails.
iter_preproc
iter_preproc[iter_fn: def() capturing -> None, preproc_fn: def() capturing -> None](mut self)
Returns the total elapsed time by running a target function a particular number of times.
Parameters:
- iter_fn (
def() capturing -> None): The target function to benchmark. - preproc_fn (
def() capturing -> None): The function to preprocess the target function.
iter_preproc[IterFn: def() -> None, PreprocFn: def() -> None](mut self, iter_fn: IterFn, preproc_fn: PreprocFn)
Returns the total elapsed time by running a target function a particular number of times.
Parameters:
- IterFn (
def() -> None): The target function type. - PreprocFn (
def() -> None): The preprocess function type.
Args:
- iter_fn (
IterFn): The closure carrying the captured state of the target function. - preproc_fn (
PreprocFn): The closure carrying the captured state of the preprocess function.
iter_custom
iter_custom[iter_fn: def(Int) raises capturing -> Int](mut self)
Times a target function with custom number of iterations.
Parameters:
- iter_fn (
def(Int) raises capturing -> Int): The target function to benchmark.
iter_custom[FuncType: def(Int) -> Int](mut self, func: FuncType)
Times a target function with custom number of iterations.
Parameters:
- FuncType (
def(Int) -> Int): The target function type.
Args:
- func (
FuncType): The closure carrying the captured state of the target function.
iter_custom[kernel_launch_fn: def(DeviceContext) raises capturing -> None](mut self, ctx: DeviceContext)
Times a target GPU function with custom number of iterations via DeviceContext ctx.
Parameters:
- kernel_launch_fn (
def(DeviceContext) raises capturing -> None): The target GPU kernel launch function to benchmark.
Args:
- ctx (
DeviceContext): The GPU DeviceContext for launching kernel.
iter_custom[FuncType: def(DeviceContext) raises -> None](mut self, ref func: FuncType, ctx: DeviceContext)
Times a target GPU closure with custom number of iterations via DeviceContext ctx.
Notes:
This overload is intentionally separate from the parametric
iter_custom[kernel_launch_fn](ctx) form. Nested launch closures that
capture benchmark-local state are closure values, and the current
closure typing rules do not let those values compose with a
def(DeviceContext) raises capturing[_] compile-time parameter while
preserving their capture object. This value-taking overload forwards
the closure to DeviceContext.execution_time() so FuncType carries
the captured state.
Parameters:
- FuncType (
def(DeviceContext) raises -> None): The target GPU kernel launch closure type.
Args:
- func (
FuncType): The closure carrying the captured state of the kernel launch. - ctx (
DeviceContext): The GPU DeviceContext for launching kernel.
iter_custom[kernel_launch_fn: def(DeviceContext, Int) raises capturing -> None](mut self, ctx: DeviceContext)
Times a target GPU function with custom number of iterations via DeviceContext ctx.
Parameters:
- kernel_launch_fn (
def(DeviceContext, Int) raises capturing -> None): The target GPU kernel launch function to benchmark.
Args:
- ctx (
DeviceContext): The GPU DeviceContext for launching kernel.
iter_custom[FuncType: def(DeviceContext, Int) raises -> None](mut self, ref func: FuncType, ctx: DeviceContext)
Times a target GPU closure with custom number of iterations via DeviceContext ctx.
Notes:
This overload is intentionally separate from the parametric
iter_custom[kernel_launch_fn](ctx) form. Nested launch closures that
capture benchmark-local state are closure values, and the current
closure typing rules do not let those values compose with a
def(DeviceContext, Int) raises capturing[_] compile-time parameter
while preserving their capture object. This value-taking overload
forwards the closure to DeviceContext.execution_time_iter() so
FuncType carries the captured state.
Parameters:
- FuncType (
def(DeviceContext, Int) raises -> None): The target GPU kernel launch closure type.
Args:
- func (
FuncType): The closure carrying the captured state of the kernel launch. - ctx (
DeviceContext): The GPU DeviceContext for launching kernel.
iter_custom_multicontext
iter_custom_multicontext[kernel_launch_fn: def() raises capturing -> None](mut self, ctxs: List[DeviceContext])
Times a target GPU function with custom number of iterations via DeviceContext ctx.
Parameters:
- kernel_launch_fn (
def() raises capturing -> None): The target GPU kernel launch function to benchmark.
Args:
- ctxs (
List[DeviceContext]): The list of GPU DeviceContext's for launching kernel.