Test region: 40,000 prims (or there abouts), running trunk. Testing a combination of factors including idle running, idle running with an avatar, etc.
Random notes herein: - 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. - SQLite processing one-at-a-time is very slow. Inserts should be bulked for performance. I suggest running a '1500ms' rule on it. - 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[?])? - 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?) - 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. I have a feeling that with a few of these things fixed, performance would increase dramatically.
_______________________________________________ Opensim-dev mailing list [email protected] https://lists.berlios.de/mailman/listinfo/opensim-dev
