# BaseElement ## Functions |Method|Returns|Description| |---|---|---| |[BaseElement:startProfile](#baseelement-startprofile-methodname)|BaseElement|Starts timing a method call| |[BaseElement:endProfile](#baseelement-endprofile-methodname)|BaseElement|Ends timing a method call and records statistics| |[BaseElement:benchmark](#baseelement-benchmark-methodname)|BaseElement|Enables performance measurement for a method| |[BaseElement:logBenchmark](#baseelement-logbenchmark-methodname)|BaseElement|Logs benchmark statistics for a method| |[BaseElement:stopBenchmark](#baseelement-stopbenchmark-methodname)|BaseElement|Disables performance measurement for a method| |[BaseElement:getBenchmarkStats](#baseelement-getbenchmarkstats-methodname)|stats|Retrieves benchmark statistics for a method| ## BaseElement:startProfile(methodName) Starts profiling a method ### Parameters * `methodName` `string` The name of the method to profile ### Returns * `BaseElement` `self` The element instance ## BaseElement:endProfile(methodName) Ends profiling a method ### Parameters * `methodName` `string` The name of the method to stop profiling ### Returns * `BaseElement` `self` The element instance ## BaseElement:benchmark(methodName) Enables benchmarking for a method ### Parameters * `methodName` `string` The name of the method to benchmark ### Returns * `BaseElement` `self` The element instance ### Usage ```lua element:benchmark("render") ``` ## BaseElement:logBenchmark(methodName) Logs benchmark statistics for a method ### Parameters * `methodName` `string` The name of the method to log ### Returns * `BaseElement` `self` The element instance ## BaseElement:stopBenchmark(methodName) Stops benchmarking for a method ### Parameters * `methodName` `string` The name of the method to stop benchmarking ### Returns * `BaseElement` `self` The element instance ## BaseElement:getBenchmarkStats(methodName) Gets benchmark statistics for a method ### Parameters * `methodName` `string` The name of the method to get statistics for ### Returns * `stats` `The` benchmark statistics or nil # Container Extends: `VisualElement` ## Functions |Method|Returns|Description| |---|---|---| |[Container:benchmarkContainer](#container-benchmarkcontainer-methodname)|Container|Recursively enables benchmarking| |[Container:logContainerBenchmarks](#container-logcontainerbenchmarks-methodname)|Container|Recursively logs benchmark statistics| |[Container:stopContainerBenchmark](#container-stopcontainerbenchmark-methodname)|Container|Recursively stops benchmarking| ## Container:benchmarkContainer(methodName) Enables benchmarking for a container and all its children ### Parameters * `methodName` `string` The method to benchmark ### Returns * `Container` `self` The container instance ### Usage ```lua container:benchmarkContainer("render") ``` ## Container:logContainerBenchmarks(methodName) Logs benchmark statistics for a container and all its children ### Parameters * `methodName` `string` The method to log ### Returns * `Container` `self` The container instance ## Container:stopContainerBenchmark(methodName) Stops benchmarking for a container and all its children ### Parameters * `methodName` `string` The method to stop benchmarking ### Returns * `Container` `self` The container instance # Benchmark _This is the benchmark plugin. It provides performance measurement tools for elements and methods,_ _with support for hierarchical profiling and detailed statistics. The plugin is meant to be used for very big projects_ _where performance is critical. It allows you to measure the time taken by specific methods and log the results._ ## Functions |Method|Returns|Description| |---|---|---| |[Benchmark.start](#benchmark-start-name-options)|-|Starts timing a custom operation| |[Benchmark.stop](#benchmark-stop-name)|-|Stops timing and logs results| |[Benchmark.getStats](#benchmark-getstats-name)|stats|Retrieves benchmark statistics| |[Benchmark.clear](#benchmark-clear-name)|-|Removes a benchmark's data| |[Benchmark.clearAll](#benchmark-clearall)|-|Removes all custom benchmark data| ## Benchmark.start(name, options?) Starts a custom benchmark ### Parameters * `name` `string` The name of the benchmark * `options` *(optional)* `table` Optional configuration ## Benchmark.stop(name) Stops a custom benchmark ### Parameters * `name` `string` The name of the benchmark to stop ## Benchmark.getStats(name) Gets statistics for a benchmark ### Parameters * `name` `string` The name of the benchmark ### Returns * `stats` `The` benchmark statistics or nil ## Benchmark.clear(name) Clears a specific benchmark ### Parameters * `name` `string` The name of the benchmark to clear ## Benchmark.clearAll() Clears all custom benchmarks