########################## Profiling Your Application ########################## The Profiler Class will display benchmark results, queries you have run, and ``$_POST`` data at the bottom of your pages. This information can be useful during development in order to help with debugging and optimization. Initializing the Class ====================== .. important:: This class does NOT need to be initialized. It is loaded automatically by the :doc:`Output Library <../libraries/output>` if profiling is enabled as shown below. Enabling the Profiler ===================== To enable the profiler place the following line anywhere within your :doc:`Controller <controllers>` methods:: $this->output->enable_profiler(TRUE); When enabled a report will be generated and inserted at the bottom of your pages. To disable the profiler you will use:: $this->output->enable_profiler(FALSE); Setting Benchmark Points ======================== In order for the Profiler to compile and display your benchmark data you must name your mark points using specific syntax. Please read the information on setting Benchmark points in the :doc:`Benchmark Library <../libraries/benchmark>` page. Enabling and Disabling Profiler Sections ======================================== Each section of Profiler data can be enabled or disabled by setting a corresponding config variable to TRUE or FALSE. This can be done one of two ways. First, you can set application wide defaults with the *application/config/profiler.php* config file. Example:: $config['config'] = FALSE; $config['queries'] = FALSE; In your controllers, you can override the defaults and config file values by calling the ``set_profiler_sections()`` method of the :doc:`Output Library <../libraries/output>`:: $sections = array( 'config' => TRUE, 'queries' => TRUE ); $this->output->set_profiler_sections($sections); Available sections and the array key used to access them are described in the table below. ======================= =================================================================== ======== Key Description Default ======================= =================================================================== ======== **benchmarks** Elapsed time of Benchmark points and total execution time TRUE **config** CodeIgniter Config variables TRUE **controller_info** The Controller class and method requested TRUE **get** Any GET data passed in the request TRUE **http_headers** The HTTP headers for the current request TRUE **memory_usage** Amount of memory consumed by the current request, in bytes TRUE **post** Any POST data passed in the request TRUE **queries** Listing of all database queries executed, including execution time TRUE **uri_string** The URI of the current request TRUE **session_data** Data stored in the current session TRUE **query_toggle_count** The number of queries after which the query block will default to 25 hidden. ======================= =================================================================== ======== .. note:: Disabling the :doc:`save_queries </database/configuration>` setting in your database configuration will also effectively disable profiling for database queries and render the 'queries' setting above useless. You can optionally override this setting with ``$this->db->save_queries = TRUE;``. Without this setting you won't be able to view the queries or the `last_query <database/helpers>`.