Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

state_exit code runs slow on Mono servers

Lear Cale
wordy bugger
Join date: 22 Aug 2007
Posts: 3,569
08-30-2008 20:47
On Mono-enabled sims, and regardless of whether old or Mono compiled, a loop takes a hundred times longer when executed from the state_exit handler.

On 1.23 servers, code in state_exit handlers ran fast. I noticed this problem because of old code that was running terribly slowly on 1.24 servers.


CODE


check(string where) {
float t = llGetTime();
integer ix;
integer count = 20;
for (ix = 0; ix < count; ++ix) {
}
llSay(0, where + ": " + (string)((llGetTime() - t) / ix) + " seconds per iteration");
}


default {
state_entry() {
llSay(0, "====================");
check("state_entry");
}

touch_start(integer count) {
check("touch_start");
state done;
}

state_exit() {
check("state_exit");
}
}

state done {
state_entry() {
llSay(0, "deleting script");
llRemoveInventory(llGetScriptName());
}
}


Results for LSL-compiled:

[20:41] jPose bed cover v1l: ====================
[20:41] jPose bed cover v1l: state_entry: 0.002211 seconds per iteration
[20:41] jPose bed cover v1l: touch_start: 0.001207 seconds per iteration
[20:41] jPose bed cover v1l: state_exit: 0.288338 seconds per iteration
[20:41] jPose bed cover v1l: deleting script

Results for Mono-compiled:

[20:46] jPose bed cover v1l: ====================
[20:46] jPose bed cover v1l: state_entry: 0.000665 seconds per iteration
[20:46] jPose bed cover v1l: touch_start: 0.000199 seconds per iteration
[20:46] jPose bed cover v1l: state_exit: 0.024114 seconds per iteration

Is this a know bug?

Thanks
Lear Cale
wordy bugger
Join date: 22 Aug 2007
Posts: 3,569
08-30-2008 20:54
Ah, there's a JIRA entry already:

http://jira.secondlife.com/browse/SVC-2958