[Opensim-dev] Severely Decreased LSL Script Performance from 0.6.5 -> 0.6.6 -> 0.6.7
Shack Dougall
shack at liferain.com
Tue Oct 6 21:03:05 UTC 2009
One part of Prim Composer is an LSL-based rezzing system that creates a
build from notecard data.
http://liferain.com/downloads/primcomposer/
In OpenSim 0.6.5, this system worked almost as good as in Second Life.
Unfortunately, it does not work well in 0.6.6 and is unusable in 0.6.7
*Test Platform*: Standalone, Windows XP, MySQL, ODE Physics,
Meshmerizer. Other than this I use the defaults.
So, the question is "What is causing the problem?" What has changed
since 0.6.5 that causes the LSL rezzer to perform so badly?
I have verified that the script engine defaults have not changed.
*How the rezzer works*
The rezzer contains linksets with various numbers of prims, e.g.,
Linkset-10 is a linkset with 10 prims in it.
1. The rezzer reads data out of a notecard. It sees how many prims
should be in the next linkset and rezzes a linkset from its inventory
with that number of prims.
2. When the linkset rezzes, the root prim tells the rezzer that it is
alive and the rezzer sends it the UUID and line number of a notecard to
read via chat. At this point, the rezzer goes back to Step 1.
3. The root prim then sends a link message to its children telling them
the UUID and a line number to read.
4. Each prim in the linkset then reads their data independently from
the notecard and then performs llSetPrimitiveParams to transform
themselves into the shape determined by the notecard data.
It's actually a lot more complicated than that, but you get the idea.
So, lots of prims are being rezzed very quickly via LSL and each prim
has a script in it that reads notecard data and sets params.
In 0.6.5, this process runs very smoothly--prims and scripts are created
and execute quickly. In 0.6.6 and above, something is happening that
drastically slows this process down. Either the prims are rezzing
slower, or the scripts are starting slower or the scripts are executing
slower.
In any event, the difference is extreme. It is bad in 0.6.6 and seems
to be even worse in 0.6.7.
Does anyone have any ideas or suggestions? Is this a bug? Is it an
inevitable fact of life? Can it be improved? What can I do to help
with the process?
I'm more than happy to create a video showing the difference. The LSL
scripts are open source. I can also set you up with some test data and
a copy of my maxport utility if anyone wants to try to reproduce it. It
is very easy to do.
Thanks in advance! --Shack
More information about the Opensim-dev
mailing list