StartScriptProfiling - Debug

From the CreationKit Wiki
Revision as of 23:19, 5 October 2012 by imported>Perdev
Jump to navigation Jump to search

Member of: Debug Script

Starts profiling a single Papyrus script. Child and parent scripts are not profiled. The profile files are stored in "<game folder>/Logs/Script/Profiling". This will also cycle the older profiling logs (so log 0 becomes 1, 1 becomes 2, etc). If the script is already profiled nothing will change. Profiling requests are not saved and will be reset if you load a save game.

Syntax

Function StartScriptProfiling(string asScriptName) native global

Parameters

  • asScriptName: The name of the script to start profiling.

Return Value

None.

Examples

; Starts profiling "MySlowScript"
Debug.StartScriptProfiling("MySlowScript")

Notes

Profiling requires the "bEnableProfiling" flag in the "[Papyrus]" section of the ini file to be set to 1. Consoles will never profile in release final builds.

Identifying latent functions

It is possible to use this method to determine whether a function is latent or not. For example in the following output we can see that the AddSpell - Actor function's call triggers a QUEUE_PUSH. This is because it is a latent function. On the hand, Debug.Trace does not trigger this instruction because it is not latent.

26473:START:76
26473:POP:76:1:None:Debug..StartStackProfiling
26473:PUSH:76:1:MyTestQuest (0B000D62):MyTestScript2..SomeCall
26473:PUSH:76:2:None:Debug..Trace
26473:POP:76:2:None:Debug..Trace
26473:QUEUE_PUSH:76:2:None:Game.??.getplayer
26955:PUSH:76:2:None:Game..getplayer
26955:POP:76:2:None:Game..getplayer

See Also