Difference between revisions of "StartScriptProfiling - Debug"

From the CreationKit Wiki
Jump to navigation Jump to search
imported>Perdev
(→‎See Also: Added corresponding console command)
 
(2 intermediate revisions by 2 users not shown)
Line 26: Line 26:
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.
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 ===
The flamegraph visualizer [https://www.speedscope.app/ speedscope] supports all kinds of profiles that Skyrim produces, including those produced by this function.
It is possible to use this method to determine whether a function is [[:Category:Latent Functions|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, [[Trace - Debug|Debug.Trace]] does not trigger this instruction because it is not latent.
<pre>
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
</pre>


== See Also ==
== See Also ==
*[[Debug Script]]
*[[Debug Script]]
*[[StopScriptProfiling - Debug]]
*[[StopScriptProfiling - Debug]]
*[[StartPapyrusScriptProfile]] (Console Command)

Latest revision as of 14:59, 22 February 2024

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[edit | edit source]

Function StartScriptProfiling(string asScriptName) native global

Parameters[edit | edit source]

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

Return Value[edit | edit source]

None.

Examples[edit | edit source]

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

Notes[edit | edit source]

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.

The flamegraph visualizer speedscope supports all kinds of profiles that Skyrim produces, including those produced by this function.

See Also[edit | edit source]