Difference between revisions of "Core.profilerReport"
m (Text replacement - "<source" to "<syntaxhighlight") |
|||
Line 4: | Line 4: | ||
=== Description === | === Description === | ||
Returns an associative array of tables describing CPU usage of lua functions. | Returns an associative array of tables describing CPU usage of lua functions. | ||
− | < | + | <syntaxhighlight lang="lua"> |
(table) = Core.profilerReport() | (table) = Core.profilerReport() | ||
</source> | </source> | ||
Line 18: | Line 18: | ||
=== Example === | === Example === | ||
− | < | + | <syntaxhighlight lang="lua"> |
max = 10000 | max = 10000 | ||
calls = 10 | calls = 10 |
Revision as of 14:26, 13 July 2023
Available since: Gideros 2017.8
Class: Core
Description
Returns an associative array of tables describing CPU usage of lua functions. <syntaxhighlight lang="lua"> (table) = Core.profilerReport() </source>
Each table in the array is indexed by a unique function id and has the following content:
- name - Name of the function
- time - Total time spent in the function (seconds)
- count - Number of times this function was called
- callers - A table containing the same information has above for each function which called this one
Return values
Returns (table) table with profiling data
Example
<syntaxhighlight lang="lua"> max = 10000 calls = 10 a = -458
local abs=math.abs
function test1() for loop=1,max do local sign=math.abs(a)/a end end
function test2() for loop=1,max do local sign=1 if a<0 then sign=-1 end end end
function test3() for loop=1,max do local sign=a < 0 and -1 or 1 end end
Core.profilerReset() Core.profilerStart() for loop = 1, calls do test1() test2() test3() end Core.profilerStop()
-- print the results of the profiler result = Core.profilerReport() print("Number of tests:", max*calls) for k,v in pairs(result) do local found=false for k2,v2 in pairs(v) do if found and k2=="time" then print(v1,v2) end if k2=="name" and string.sub(v2,1,4)=="test" then v1=v2 found=true end end end </source>