Go James!

Thanks for doing the due-diligence on this one.
I read the thread and it was somethin I had not heard of before.

Thanks for clearing it up. 


Regards,
 
Bjorn Schultheiss



-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of JOR
Sent: Tuesday, 19 September 2006 1:23 PM
To: Flashcoders mailing list
Subject: Re: [Flashcoders] Find item in array

Steven Sacks | BLITZ wrote:
> It's the fastest because:
> 
> Pre-decrementation (--i) is faster than post-decrementation (i--)

I don't see why that would be.  Both "var i=1;i--;" and "var i=1;--i;" 
compile down to the exact same 8 lines of p-code:

  _constantPool "i"
  _push "i" 1
  _var
  _push "i" "i"
  _getVariable
  _decrement
  _setVariable
  _end

So i don't see how one can be faster than the other.  Maybe in other
languages this is the case?


> And substraction (- (-1) is faster than addition (+ 1).
> 

I ran numerous tests using loops of 1 million on this but was unable to 
conclude one way or the other because roughly half the time one method 
was faster than the other.  differences ranged from 1 millisecond to 175 
milliseconds in both directions.  My only take on my results is that 
they are at least negligably similar.

> They are faster because it's less code that gets produced when you
> compile.
> http://flasm.sourceforge.net/#optimization
> 

This isn't true.  (i--) is one less line of p-code (and 9 less bytes of 
data) than (--i -(-1)) because it isn't doing the extra calculation of 
subtraction like I mentioned in my email.  Take a look at the p-code:

var i:Number = 1;
while (i--) {
   trace(i);
}

        _constantPool "i"
        _push "i" 1
        _var
#4      _push "i"
        _getVariable
        _push "i" "i"
        _getVariable
        _decrement
        _setVariable
        _not
        _if true goto #16
        _push "i"
        _getVariable
        _trace
        _jump to #4
#16     _end

------------------------------
var i:Number = 1;
while (--i -(-1)) {
   trace(i);
}

        _constantPool "i"
        _push "i" 1
        _var
#4      _push "i" "i"
        _getVariable
        _decrement
        _storeRegister 0
        _setVariable
        _push register0 4294967295
        _subtract
        _not
        _if true goto #17
        _push "i"
        _getVariable
        _trace
        _jump to #4
#17     _end


> For most cases, it's a matter of milliseconds or even less, which isn't
> that big a deal, but I use it anyway because it's a good habit to have
> and it makes my code logic work with that in mind always so when it does
> make a difference in seconds, it's already there.
> 

I agree about it not being a big deal, but I prefer the (i--) method 
over (--i -(-1)) since I find it easier to read.

-- James


James O'Reilly
www.jamesor.com


_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to