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

Reply via email to