Papervision still needs to work on it's object creation speed, and a few other areas that put Away3D listed as #1 on the older test.
So Papervision still has some work, and catching up to do :) -Pete On Thu, Nov 20, 2008 at 1:46 PM, Seb Lee-Delisle <[EMAIL PROTECTED]>wrote: > > Actually they were using an old version of Papervision. The updated > test shows that it actually uses less memory than Away... > > > http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/ > > Seb > > > > On Wed, Nov 19, 2008 at 3:32 PM, Peter Kapelyan <[EMAIL PROTECTED]> > wrote: > > Someone on pv3d list posted this: > > > > > http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/ > > > > papervision3d takes 282MB memory while away3d only takes 32mb? > > > > I think that would mean those optimizations are already in Away3D :) > > > > -Pete > > > > On Wed, Nov 19, 2008 at 10:03 AM, Ian Stokes <[EMAIL PROTECTED]> > wrote: > >> > >> HI, > >> > >> this is a letter posted on the PV3d list showing how a developer > >> modded PV3D garbage collection, even though its a different engine, > >> and might not apply, I thought I'd paste it here in case anyone else > >> wants to look at the techniques; > >> > >> 294913 Number3D (around 30% of total memory usage of the game) > >> > 96649 Vertex3DInstance (15% of total memory usage) > >> > 95508 Dictionaries (10% of total memory usage) > >> > 95433 Vertex3D (20% of total memory usage) > >> > = > >> > 582503 objects in memory for our golfers geometry! > >> > > >> > Given how flash has a mark-sweep garbage collector, this was giving > some > >> > interesting performance issues related to garbage collection. > >> > > >> > So the steps we took to optimise it were: > >> > - Each Vertex3D object has a Dictionary instance that is used compute > >> > normals. The normals computed happens once, however the dictionary was > >> > not > >> > not free'd. So we Saved ~90.000 Dictionary objects there > >> > > >> > - Vertex3DInstance has an unused normal instantied to 0,0,0, i.e. a > >> > Number3D, it's never referenced or used outside Vertex3DInstance > removed > >> > this: removed ~90.000 Number3D instances > >> > > >> > - Vertex3D caches a "position" as Number3D that is used once for > Normal > >> > calculation, this was never freed. I removed this and just used > original > >> > x,y,z. saved as i did not see a need for this indirection. around > 90.000 > >> > further Number3D instances removed > >> > > >> > - Not sure about the safety of this one, however the normal in > Vertex3D > >> > was > >> > not referenced anywhere other than being initialised. So in the end i > >> > got > >> > rid of this. Another 90.000 more Number3D instances saved > >> > > >> > - last but not least, every Vertex3D has a Vertex3DInstance object > used > >> > for > >> > the rendered onscreen position. Again, this indirection did not seem > >> > neceserry, so I merged these 2 classes into 1 and same object rather > >> > than > >> > child object which saved alot more unneeded object instances and > >> > references > >> > > >> > So these combined optimisations ended us up with: > >> > - 96649 instances of Vertex3D (all vertexes for all frames naturally) > >> > - 7398 Number3D instances > >> > > >> > This ended up saving us nearly 500.000 object instances and halving > our > >> > apps > >> > memory usage (reported by flex profiler) from 30MB to 15MB. It also > >> > greatly > >> > improved performance of garbage collection. > >> > > >> > You can see a summary from the profiling here: > >> > http://www.kimdanielarthur.com/tmp/papervision_optimise.gif > >> > > >> > Hopefully useful if anyone runs into similar behaviour! > >> > > >> > Kim Daniel Arthur > >> > > >> > ps. > >> > Thanks again for a great 3D library its really brought extra life to > our > >> > games > >> > > > > > > > -- > > ___________________ > > > > Actionscript 3.0 Flash 3D Graphics Engine > > > > HTTP://AWAY3D.COM <http://away3d.com/> > > > -- ___________________ Actionscript 3.0 Flash 3D Graphics Engine HTTP://AWAY3D.COM
