Hmm, this article has an interesting note about not putting code into
application constructors, because he says that
the JIT is not run on class constructors for some reason

http://blog.pixelbreaker.com/flash/as30-jit-vs-interpreted/

He cites a performance tuning article from Adobe
http://www.onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf


I've been developing an application recently that requires large numbers of
> classes to be initialised as soon as the application is loaded. It's an
> isometric display engine, a la "Sim City", with a world map of 800 x 600
> tiles, and multiple layers ( terrain, objects, transport networks etc)
> there's potential for over 100,000 instances!!!
>
> I found ActionScript 3.0 and AVM2: Performance 
> Tuning<http://www.onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf>by Gary 
> Grossman, which covers many aspects of how AVM2 is different from
> AVM1. The part I was interested in was about $init and $cinit (class
> constructor) functions being interpreted and everything else being JIT.
>
> The initial setup of the engine runs over a timed loop (to stop script
> timeouts), and this was typically taking 20 to 30 seconds. After reading the
> above PDF, it became clear that class constructors are interpreted, not JIT
> compiled, so all I had to do was move the code out of the constructor, into
> an init() function, and call if after the constructor, this shaved a huge
> amount of time off the initial build of the landscape.
>
> Some initial tests, with a for loop running from 0 to 10000 showed that in
> the constructor it took about 350ms, and called via another method, it took
> only 240ms. It is not always faster, but 90% of the time it's faster.
>

On Thu, Feb 14, 2008 at 5:11 PM, David Temkin <[EMAIL PROTECTED]>
wrote:

> It seems odd that if (1) classes are not declared as sealed, and (2)
> no typing information has been added to LFC code, that we'd be seeing
> the dramatic performance improvement over SWF8 that Henry has measured.
>
> Explanation?
>
> - D.
>
>
> On Feb 14, 2008, at 10:52 AM, P T Withington wrote:
>
> > I take this to mean either:
> >
> > a) Their compiler is not taking advantage of sealing, yet.
> >
> > b) Their compiler is very smart and realizes that although your
> > classes are declared dynamic, the are not extended in this
> > application so they can be treated as sealed.
> >
> > On 2008-02-13, at 22:05 EST, Henry Minsky wrote:
> >
> >> I did some more testing of the view creation app (instantiating
> >> 10,000 empty
> >> views), and tried declaring
> >> all of the base LFC classes (LzNode, LzView, LzEvent, lzDelegate) as
> >> dynamic, and it did not actually
> >> seem to make any significant  slowdown in the speed. The creation
> >> speed
> >> averages about 100 usecs  for
> >> an empty view in either case.
> >>
> >> So whatever was causing the factor of two  slowness in the  tests
> >> a couple
> >> weeks ago was  some other bug.
> >>
> >> The 100 usec speed is with the flex debug flag off, with debugging
> >> on it was
> >> about 120 usecs.
> >>
> >> For comparison, the creation speed in swf8 seems to be about 330
> >> usecs for
> >> the same empty view.
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> --
> >> Henry Minsky
> >> Software Architect
> >> [EMAIL PROTECTED]
> >
>
>


-- 
Henry Minsky
Software Architect
[EMAIL PROTECTED]

Reply via email to