How do a read a xdebug profile in webgrind?

I have setup xdebug and webgrind and I have generated a profile so I can start improving the speed of my code execution. I have displayed the profile in webgrind but I haven't got a clue what any of it means. All the googling I have done doesn't really explain any of it either.

Could someone please explain the basics of reading a webgrind report:

Invocation Count

Total Self Cost

Total Inclusive Cost

What the different colours mean

What the coloured bar means

Calls

Total Call Cost

Count


The basic output lists all the different functions, methods, and included/required files.

  • Invocation Count: The number of times the function has been called

  • Total Self Cost: The total time it took to execute the raw php in this function (time taken to execute your other custom functions is excluded.)

  • Total Inclusive Cost: Total time, including any other functions called (PHP internal, or your functions)

  • What the different colours mean?

    • Blue are PHP internal functions
    • Green are your class methods
    • Orange are procedural functions
    • Grey is time taken to include, or require .php files.
  • What the coloured bar means? Graphical display of breakdown of time for each type as above.

  • For the last ones, I assume you've clicked the arrow to open a particular function?

    • Calls: The functions/methods called in executing this function

    • Total Call Cost: The total time executing this function, when called from the parent function

    • Count: Number of times the parent calls the child.