Kohana provides a very simple way to display statistics about your application:
In order for profiling to work, the profile
setting must be TRUE
in your Kohana::init() call in your bootstrap.
You can easily add profiling to your own functions and code. This is done using the Profiler::start() function. The first parameter is the group, the second parameter is the name of the benchmark.
public function foobar($input)
{
// Be sure to only profile if it's enabled
if (Kohana::$profiling === TRUE)
{
// Start a new benchmark
$benchmark = Profiler::start('Your Category', __FUNCTION__);
}
// Do some stuff
if (isset($benchmark))
{
// Stop the benchmark
Profiler::stop($benchmark);
}
return $something;
}
The benchmarks are sorted into groups. Each benchmark will show its name, how many times it was run (show in parenthesis after the benchmark name), and then the min, max, average, and total time and memory spent on that benchmark. The total column will have shaded backgrounds to show the relative times between benchmarks in the same group.
At the very end is a group called "Application Execution". This keeps track of how long each execution has taken. The number in parenthesis is how many executions are being compared. It shows the fastest, slowest, and average time and memory usage of the last several requsets. The last box is the time and memory usage of the current request.
((This could use a picture of a profiler with some database queries, etc. with annotations to point out each area as just described.))
You can display or collect the current profiler statistics at any time:
<?php echo View::factory('profiler/stats') ?>
(This is the actual profiler stats for this page.)
Requests | 0.038480 s | |||
---|---|---|---|---|
412.2656 kB | ||||
Benchmark | Min | Max | Average | Total |
"guide/kohana/profiling" (1) |
0.038597 s
|
0.038597 s
|
0.038597 s
|
0.038597 s
|
419.5625 kB
|
419.5625 kB
|
419.5625 kB
|
419.5625 kB
|
Kohana | 0.032086 s | |||
---|---|---|---|---|
17.5547 kB | ||||
Benchmark | Min | Max | Average | Total |
find_file (31) |
0.000790 s
|
0.001575 s
|
0.001035 s
|
0.032086 s
|
0.4922 kB
|
0.6641 kB
|
0.5663 kB
|
17.5547 kB
|
Application Execution (1) | 0.071149 s | 0.071149 s | 0.071149 s | 0.071149 s |
---|---|---|---|---|
772.6641 kB | 772.6641 kB | 772.6641 kB | 772.6641 kB |