Skip to content
lsl.devlsl.devLSL Dev

llScriptProfiler

function
Function syntax
llScriptProfiler(
  1. integer flags// PROFILE_* flag (such as PROFILE_NONE or PROFILE_SCRIPT_MEMORY) to set the profiling state. Values: ScriptProfileMode
);
Energy
10

Enables or disables the script's profiling state using flags (supports PROFILE_SCRIPT_MEMORY on Mono, or PROFILE_NONE). Active profiling can significantly reduce script performance.

Enables or disables the scripts profiling state.

How to use
llScriptProfiler(0);

This function’s behavior is dependent upon the VM the script is using. Mono is the new VM, LSO is the old VM. The big difference between Mono and LSO is that Mono scripts run faster and can utilize four times more memory.

Use this function with PROFILE_SCRIPT_MEMORY to enable memory profiling at a severe script performance penalty. Use it with PROFILE_NONE to disable profiling. During and after a profiling run llGetSPMaxMemory will return the most memory used at any one time.

This function has no effect for scripts not compiled to Mono.

ConstantValDescription
PROFILE_NONE0Disables profiling
PROFILE_SCRIPT_MEMORY1Enables memory profiling
  • Scripts compiled to LSO can not be profiled for memory use.
  • The profile state will reset to PROFILE_NONE if:
  • the object the script is in is de-rezed, rezed or changes regions (via region cross or teleport)
  • the region that object with the script is in shuts down or restarts
  • if the script is reset or taken to or from inventory
  • There is up to 100x performance penalty to the script being profiled (but not the region).
Calling llScriptProfiler can look like this:
llScriptProfiler(PROFILE_SCRIPT_MEMORY);
my_func();
llScriptProfiler(PROFILE_NONE);
llOwnerSay("This script used at most " + (string)llGetSPMaxMemory() + " bytes of memory during my_func.");
This is how it looks in a script as an example:
12 collapsed lines
// need to run something for the profile to register...
workerMethod()
{
float mathNumber = 3 * PI + 3 * llSin( PI );
llSetText( "Answer: " + (string)mathNumber, <1, 0, 0>, 1.0 );
}
default
{
state_entry()
{
llSetMemoryLimit( 5000 ); // set the memory limit
// call up the profiler, execute a method, stop profiler
llScriptProfiler( PROFILE_SCRIPT_MEMORY );
workerMethod();
llScriptProfiler( PROFILE_NONE );
// display memory usage...
7 collapsed lines
llSay(0, "Memory used: " + (string)llGetSPMaxMemory() + " bytes, total memory: " +
(string)llGetMemoryLimit() + " bytes." );
}
}
// outputs
// Object: Memory used: 4968 bytes, total memory: 5000 bytes.

Date of Release 17/06/2011

Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.

From the Second Life Wiki

Community documentation adapted from LlScriptProfiler, by Linden Research, Inc. and contributing residents.View contributors and history.

Imported wiki revision:

Licensed under CC BY-SA 3.0. Last wiki edit: .Formatting and links have been adapted for this site; API metadata follows the LSL definitions.