Difference between revisions of "Core.profilerReport"
From GiderosMobile
m (Text replacement - "</source>" to "</syntaxhighlight>") |
|||
| (11 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | |||
'''Available since:''' Gideros 2017.8<br/> | '''Available since:''' Gideros 2017.8<br/> | ||
| + | '''Class:''' [[Core]]<br/> | ||
| + | |||
=== 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() | ||
| − | </ | + | </syntaxhighlight> |
| + | |||
| + | 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 === | === Return values === | ||
'''Returns''' (table) table with profiling data<br/> | '''Returns''' (table) table with profiling data<br/> | ||
| + | |||
| + | === 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 | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | {{Core}} | ||
Latest revision as of 15:26, 13 July 2023
Available since: Gideros 2017.8
Class: Core
Description
Returns an associative array of tables describing CPU usage of lua functions.
(table) = Core.profilerReport()
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
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
- Core
- Core.asyncCall
- Core.asyncThread
- Core.class
- Core.enableAllocationTracking
- Core.fileLoad
- Core.fileSave
- Core.findReferences
- Core.frameStatistics
- Core.getScriptPath
- Core.profilerReport
- Core.profilerReset
- Core.profilerStart
- Core.profilerStop
- Core.random
- Core.randomSeed
- Core.setAutoYield
- Core.signal
- Core.stopping
- Core.yield
- Core.yieldable
- Core.yieldlock