[Opensim-dev] Thoughts on performance with a profiler

Melanie melanie at t-data.com
Wed Feb 25 07:57:09 UTC 2009


Hi,

Frisby, Adam wrote:
> -          SceneGraph.Get* methods are generally very wasteful. Lots of them use the /slow/ GetEntities method to build a list of entities before searching them. This is particularly noticeable on the GetGroupByPrim(UUID) method. EntityManager should be having indexes for these frequently accessed items.

I thought some one (justin?) worked on that with the goal of adding 
indexes/making it a dict.

> -          Why, to send a primitive do we need to: - Mark it for updates. - Crawl through the Entities list for updates - Send updates to ClientViews, when we could just Send the update directly to viewers (EventManager.TriggerOnPrimUpdated[?])?

Because it would happen in the wrong thread context, maybe?

> -          Why does Scene.Heartbeat/Update do more than just updating frame-dependent things? Eg, why not keep Update to just: Update Physics, Process Scripts[?], etc. Out of it we move: Backup (timer?), Land update (when something happens+ timer?), Terrain backup (main backup thread?)

Scripts don't run in update, although movement events are generated 
there.

> -          Why build X copies of the same packet for fifteen separate clients? Why not re-use the update packet and change the agent IDs? Maybe some kind of 'PacketMaster' could be developed for each ClientView type which allows us to do 'bulk' operations like this.

Because of the sequence numbers. They are different for each client.

Melanie



More information about the Opensim-dev mailing list