
|
If you were logged in you would be able to see more operations.
|
|
|
|
File Attachments:
|
None
|
|
Image Attachments:
|
|
|
Issue Links:
|
Duplicate
|
|
|
|
This issue is original of duplicate:
|
|
SVC-4327
Rezzing mono scripted objects cause extreme performance issues
|
|
|
|
|
Parent/Child
|
|
This issue parent of:
|
|
SVC-4739
Sim freezes each time someone tp in or tp out, log in/log out - for a couple seconds untill new awatar arrives sim or leaves sim
|
|
|
|
|
|
Relates
|
|
This issue Relates to:
|
|
|
SVC-4196 Avatar entering sim or rezzing object causes sim to freeze for up to 30 seconds - everything stops for everybody there
|
|
|
|
 |
|
SVC-206 When new users teleport into a non-empty region, Agent Time spikes and sim performance drops signfigantly for a short period time
|
|
|
|
|
SVC-2967
Script Idle time increased under MONO recompilation
|
|
|
|
|
|
This issue is related to by:
|
|
|
|
|
 |
|
VWR-15512 Second life lag gone from causing slowdowns or freezing to massive rubberbanding
|
|
|
|
 |
SVC-4629
Mono engine revs out of control on 1.27, lags sim to insane levels, need a mono engine governor.
|
|
|
|
|
SVC-4616
sim stalls when people who are a bit prim and/or script heavy TP in (or log in or fly in, etc)
|
|
|
|
|
|
|
| Last Triaged: |
24/Feb/09 12:59 PM
|
| Linden Lab Issue ID: |
DEV-27936
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example can bring simulators to their knees.
----------------
Reproduction:
Rezzer
integer switch;
integer count;
default
{
touch_start(integer total_number)
{
if(switch=!switch)
{
llSetTimerEvent(0.1);
}
else
{
llSetTimerEvent(0);
llSetText("",<1,1,1>,1);
count=0;
}
}
timer()
{
llRezObject("Object",llGetPos() + <0,0,1>,ZERO_VECTOR,ZERO_ROTATION,1);
llSetText("Rezzed Objects : "+(string)(++count),<1,1,1>,1);
}
}
Child Object
default
{
on_rez(integer foo)
{
if(foo)
llSetTimerEvent(0.5);
}
timer()
{
llDie();
}
}
Change the rezzed object between Mono/LSL to observe effect.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less difference.
|
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example can bring simulators to their knees.
----------------
Reproduction:
Rezzer
integer switch;
integer count;
default
{
touch_start(integer total_number)
{
if(switch=!switch)
{
llSetTimerEvent(0.1);
}
else
{
llSetTimerEvent(0);
llSetText("",<1,1,1>,1);
count=0;
}
}
timer()
{
llRezObject("Object",llGetPos() + <0,0,1>,ZERO_VECTOR,ZERO_ROTATION,1);
llSetText("Rezzed Objects : "+(string)(++count),<1,1,1>,1);
}
}
Child Object
default
{
on_rez(integer foo)
{
if(foo)
llSetTimerEvent(0.5);
}
timer()
{
llDie();
}
}
Change the rezzed object between Mono/LSL to observe effect.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less difference. |
Show » |
made changes - 24/Feb/09 10:52 AM
| Field |
Original Value |
New Value |
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetTimerEvent(0.2);
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetTimerEvent(0.2);
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 10:52 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetTimerEvent(0.2);
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetTimerEvent(0.2);
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 10:53 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetTimerEvent(0.2);
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetTimerEvent(0.2);
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 10:54 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetTimerEvent(0.2);
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 10:59 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string bullet = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
bullet = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
bullet = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
vector shotVel = llRot2Fwd(llGetRot());
vector shotPos = llGetPos() + (rezOffset * llGetRot());
llRezObject(bullet, shotPos, shotVel * 100, llGetRot(), 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, shotPos, ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 11:02 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, shotPos, ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 11:03 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(2);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(1);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 11:05 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code:title=Bar.java|borderStyle=solid}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code:title=Bar.java|borderStyle=solid}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(1);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(1);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
made changes - 24/Feb/09 11:06 AM
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(1);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
Results of the rezzer will
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(1);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
|
made changes - 24/Feb/09 12:13 PM
|
Summary
|
Rezzing Mono scripted object heavily reduces sim FPS
|
Rezzing Mono scripted object cripples sim FPS
|
|
Description
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty in simulators with medium-heavy load. Lightly loaded sims notice little effect. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example removes around 5-10 simulator FPS in a medium loaded simulator:
----------------
Reproduction:
1) Create a standard cube
2) Add this script to the cube:
{code}
vector rezOffset = <1.0,0.0,0.0>;
integer mono = FALSE;
string object = "";
default
{
state_entry()
{
llSetText("-", <0,1,0>, 1.0);
}
touch_start(integer n)
{
llSetTimerEvent(0);
if (mono)
{
mono = FALSE;
object = "TEST_LSL";
llSetText("LSL", <0,1,0>, 1.0);
}
else
{
mono = TRUE;
object = "TEST_MONO";
llSetText("MONO", <0,0,1>, 1.0);
}
llSetTimerEvent(0.2);
}
timer()
{
llRezObject(object, llGetPos() + (rezOffset * llGetRot()), ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
{code}
3) Create an object named "TEST_MONO" out of three or four prims, size and shape is not important. Set the object to be Phantom.
4) Add default scripts to each prim of the object "TEST_MONO". Make the script in the root prim the following:
{code}
default
{
on_rez(integer start_param)
{
if (start_param)
llSetTimerEvent(1);
}
timer()
{
llDie();
}
}
{code}
5) Duplicate object, name one of them "TEST_LSL". Use "Recompile scripts in selection" to make each one fully LSL or Mono as appropriate.
6) Add both test objects to the cube created in step one.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less visible difference.
|
Tested on Second Life Server 1.25.5.109327
----------------
Rezzing Mono scripted objects results in a heavy performance penalty. Identical objects compiled into LSL do not cause similar perfomance penalty.
This also leads me to believe that attaching objects with many Mono scripts results in a larger performance penalty to the simulator than LSL.
The following example can bring simulators to their knees.
----------------
Reproduction:
Rezzer
{code}
integer switch;
integer count;
default
{
touch_start(integer total_number)
{
if(switch=!switch)
{
llSetTimerEvent(0.1);
}
else
{
llSetTimerEvent(0);
llSetText("",<1,1,1>,1);
count=0;
}
}
timer()
{
llRezObject("Object",llGetPos() + <0,0,1>,ZERO_VECTOR,ZERO_ROTATION,1);
llSetText("Rezzed Objects : "+(string)(++count),<1,1,1>,1);
}
}
{code}
Child Object
{code}
default
{
on_rez(integer foo)
{
if(foo)
llSetTimerEvent(0.5);
}
timer()
{
llDie();
}
}
{code}
Change the rezzed object between Mono/LSL to observe effect.
Monitor the results with the sim FPS shown via the Control Shift 1. Results will vary depending on simulator, lightly loaded sims will show less difference.
|
|
Priority
|
Major
[ 3
]
|
Showstopper
[ 1
]
|
made changes - 24/Feb/09 12:27 PM
|
Priority
|
Showstopper
[ 1
]
|
Critical
[ 2
]
|
made changes - 24/Feb/09 12:33 PM
|
Priority
|
Critical
[ 2
]
|
Showstopper
[ 1
]
|
made changes - 24/Feb/09 12:59 PM
|
Last Triaged
|
|
24/Feb/09 12:59 PM
|
|
Linden Lab Issue ID
|
|
DEV-27936
|
made changes - 24/Feb/09 03:43 PM
|
Comment
|
[ How can you see where you are going with your head that far up your own ass?
]
|
|
made changes - 25/Feb/09 07:38 AM
|
Priority
|
Showstopper
[ 1
]
|
Critical
[ 2
]
|
made changes - 02/Jun/09 07:38 AM
|
Link
|
|
This issue is original of duplicate SVC-4327
[ SVC-4327
]
|
made changes - 03/Jun/09 12:16 AM
|
Link
|
|
This issue Relates to SVC-4196
[ SVC-4196
]
|
made changes - 12/Jun/09 09:28 PM
|
Affects Version/s
|
|
1.26 Server
[ 10420
]
|
made changes - 16/Jun/09 11:28 AM
|
Priority
|
Critical
[ 2
]
|
Showstopper
[ 1
]
|
made changes - 12/Jul/09 09:56 PM
|
Link
|
|
This issue is related to by MISC-3001
[ MISC-3001
]
|
made changes - 17/Jul/09 02:41 PM
|
Affects Version/s
|
|
1.27 Server
[ 10460
]
|
|
Affects Version/s
|
1.25 Server
[ 10380
]
|
|
|
Affects Version/s
|
1.26 Server
[ 10420
]
|
|
made changes - 17/Jul/09 02:44 PM
|
Affects Version/s
|
|
1.26 Server
[ 10420
]
|
|
Affects Version/s
|
|
1.25 Server
[ 10380
]
|
|
Affects Version/s
|
1.27 Server
[ 10460
]
|
|
made changes - 25/Jul/09 08:37 AM
|
Affects Version/s
|
|
1.27 Server
[ 10460
]
|
made changes - 27/Jul/09 12:09 PM
|
Link
|
|
This issue is original of duplicate SEC-405
[ SEC-405
]
|
made changes - 27/Jul/09 01:15 PM
|
Link
|
|
This issue is related to by SVC-4629
[ SVC-4629
]
|
made changes - 23/Aug/09 12:12 PM
|
Comment
|
[ Isn't this related to the same underlying effect that I reported when mono first came out? i.e. - SVC-2967 "Resolved - Won't Finish". I'm close to declaring myself entirely uninterested in anything now as nothing ever gets priority fixed apart from stupid easter eggs and frankly nobody who can do anything about anything really gives a.... ***** any more.
]
|
|
made changes - 23/Aug/09 02:23 PM
|
Link
|
|
This issue parent of SVC-4739
[ SVC-4739
]
|
made changes - 24/Aug/09 02:36 PM
|
Link
|
|
This issue Relates to SVC-2967
[ SVC-2967
]
|
made changes - 27/Aug/09 03:27 PM
|
Link
|
|
This issue is related to by SVC-472
[ SVC-472
]
|
made changes - 29/Aug/09 07:07 AM
|
Link
|
|
This issue is related to by SVC-4616
[ SVC-4616
]
|
made changes - 11/Sep/09 03:55 PM
|
Assignee
|
|
WorkingOnIt Linden
[ WorkingOnIt Linden
]
|
made changes - 07/Oct/09 04:07 AM
|
Affects Version/s
|
|
1.30 Server
[ 10510
]
|
made changes - 19/Oct/09 06:59 AM
|
Assignee
|
WorkingOnIt Linden
[ WorkingOnIt Linden
]
|
Babbage Linden
[ Babbage Linden
]
|
made changes - 25/Oct/09 05:20 AM
|
Link
|
|
This issue Relates to SVC-206
[ SVC-206
]
|
|