StartScriptProfiling - Debug
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