Graphical profiler for Love2D >= 0.92
Go to file
2017-07-26 22:15:35 -07:00
LICENSE lots of tweaks, adding compatibility to 0.10.2 2017-07-26 21:15:05 -07:00
main.lua pretty close to done with improvements 2017-07-26 22:15:35 -07:00
piefiller.lua pretty close to done with improvements 2017-07-26 22:15:35 -07:00
README.md pretty close to done with improvements 2017-07-26 22:15:35 -07:00

Piefiller

Graphical profiler for Love2D >= 0.9.2

Originally by devfirefly, heavily modified by Guard13007.

Usage

  1. Require the file:
  local piefiller = require("piefiller")
  1. Make a new instance of piefiller:
  local Pie = piefiller:new()
  1. Attach the piefiller to the part of your application that you want to monitor (love.update and love.draw typically are good places):
 function love.update()
	Pie:attach()
		-- do something
	Pie:detach()
 end
  1. Draw the output and pass key events to your piefiller:
 function love.draw()
	Pie:draw()
 end
 function love.keypressed(key)
 	Pie:keypressed(key)
 end
  1. With sufficient output, press the E key to output to file. Example output:
-----drawRectangles-----
source:@main.lua:20
current line: 22
time: 548.325
percentage: 98 %
----------------

Keys

p = shows/hides the profiler

r = resets the pie

up = decreases depth

down = increases depth

- = decreases step size

= = increases step size

s = shortens the names displayed

h = shows/hides hidden processes

e = saves to file called "Profile.txt" and opens directory for you

To redefine these:

Commands available:

reset
increase_depth
decrease_depth
increase_step_size
decrease_step_size
shorten_names
show_hidden
save_to_file
show_profiler

To redefine only one of the keys:

piefiller:setKey(command, key)

example:

piefiller:setKey("increase_depth","up")

To redefine all of the keys:

table = {
	"increase_depth" = "up"
}
piefiller:setKey(table)

For your own interpretation

If you wish to interpret the data on your own use piefiller:unpack(). Output is a table as such:

	data = {
		items = {
			{
				name,
				line_defined,
				current_line,
				source,
				time_taken,
				percentage,
				caller,
			}
		},
		about = {
			depth,
			step,
			totalTime,
		},
	}

Additional notes

The best depth to search in is usually 2 and sometimes 3.

When used in large applications the output may be too much to read, however you most likely will only be wanting to optimize the most expensive items. (And you can always output the data to review later.)