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.041620 s | |||
---|---|---|---|---|
188.5469 kB | ||||
Benchmark | Min | Max | Average | Total |
"guide/kohana/profiling" (1) |
0.041698 s
|
0.041698 s
|
0.041698 s
|
0.041698 s
|
192.5859 kB
|
192.5859 kB
|
192.5859 kB
|
192.5859 kB
|
Kohana | 0.038111 s | |||
---|---|---|---|---|
3.0391 kB | ||||
Benchmark | Min | Max | Average | Total |
find_file (27) |
0.001021 s
|
0.002690 s
|
0.001412 s
|
0.038111 s
|
0.0391 kB
|
0.6250 kB
|
0.1126 kB
|
3.0391 kB
|
Application Execution (2) | 0.087472 s | 0.731793 s | 0.409632 s | 0.087472 s |
---|---|---|---|---|
360.2813 kB | 362.2578 kB | 361.2695 kB | 362.2578 kB |