Awesome
Profiler with adapter for Tracy
This repository contains lightweight, very quick and easy to use Profiler with adapter for Tracy.
Usage
If you wish to profile a block of code, simply encapsulate it between Profiler::start
and Profiler::finish
calls.
<?php // index.php
if (/* Is debug mode enabled? */) {
Profiler::enable();
}
Profiler::start();
require(__DIR__ . "/required_file.php");
Profiler::finish();
<?php // required_file.php
// If you wish to use default labels, call functions without parameters
Profiler::start(/* sprintf("%s#%s", __FILE__, __LINE__) */);
/* your code goes here */
Profiler::finish(/* sprintf("%s#%s", __FILE__, __LINE__) */);
// If you wish to use static labels, place label as first parameter
Profiler::start("static label");
/* your code goes here */
Profiler::finish("static label");
// If you wish to use dynamic labels, call functions like sprintf
Profiler::start(/* sprintf( */ "line %s", __LINE__ /* ) */);
/* your code goes here */
Profiler::finish(/* sprintf( */ "line %s", __LINE__ /* ) */);
// If you wish to create more detailed profiles, start new profile inside another one
Profiler::start("Profile 1");
/* your code goes here */
Profiler::start("Profile 1.1");
Profiler::start("Profile 1.1.1");
/* your code goes here */
Profiler::finish("Profile 1.1.1");
/* your code goes here */
Profiler::start("Profile 1.1.2");
/* your code goes here */
Profiler::finish("Profile 1.1.2");
/* your code goes here */
Profiler::finish("Profile 1.1");
Profiler::finish("Profile 1");
If you wish to know more about Profiler, please visit Profiler's README.md.
How to install
Run composer require netpromotion/profiler
in your project directory.
Nette
Add extension Netpromotion\Profiler\Extension\ProfilerNetteExtension
into your configuration, it is not necessary to call Profiler::enable
.
extensions:
profiler: Netpromotion\Profiler\Extension\ProfilerNetteExtension
If you wish to profile before the container is ready, call Profiler::enable
manually.
Configuration
profiler:
profile:
createService: false # or true
bar:
primaryValue: effective # or absolute
show:
memoryUsageChart: true # or false
shortProfiles: true # or false
timeLines: true # or false
There is a live demo available - run make demo
and click here.
Lumen, pure PHP and everything else
Add panel Netpromotion\Profiler\Adapter\TracyBarAdapter
to your bar via Bar::addPanel
method manually or use netpromotion/tracy-wrapper.
tracy_wrap(function() {
/* your code goes here */
}, [new TracyBarAdapter([
"primaryValue" => "effective", // or "absolute"
"show" => [
"memoryUsageChart" => true, // or false
"shortProfiles" => true, // or false
"timeLines" => true // or false
]
])]);
There is a live demo available - run make demo
and click here.