Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8467577
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 10, 20262026-06-10T15:41:10+00:00 2026-06-10T15:41:10+00:00

Test this code in Flash: var i:int = 0; for (var j:int = 0;

  • 0

Test this code in Flash:

var i:int = 0;
for (var j:int = 0; j < 5000000; j++)
{
    i=i+1;
}// use about 300ms.

i = 0;
for (var j:int = 0; j < 5000000; j++)
{
    i++;
}// use about 400ms

i = 0;
for (var j:int = 0; j < 5000000; j++)
{
    ++i;
}// use about 400ms too

Why is i=i+1 faster in ActionScript 3 when it’s slower in others?

Sorry,I make some mistake.The code above use the same time.
but if put it into function,and the result will be different.

var i:int;
var j:int;
var startTime:Number;

function func1():void
{
    i = i + 1;
}

function func2():void
{
    i++;
}

startTime = getTimer();
i = 0;
for (j = 0; j < 10000000; j++)
{
    func1();
}
trace(getTimer() - startTime);//5 times:631,628,641,628,632

startTime = getTimer();
i = 0;
for (j = 0; j < 10000000; j++)
{
    func2();
}
trace(getTimer() - startTime);//5 times:800,814,791,832,777
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-10T15:41:12+00:00Added an answer on June 10, 2026 at 3:41 pm

    Where your loop is situated can have a large impact on performance. If your loop is inside a function, Flash will perform calculations using local registers. The loop containing i++ produces thus the following opcodes:

    000013 inclocal_i (REG_2)  ; increment i 
    000015 inclocal_i (REG_3)  ; increment j
    000017 getlocal (REG_3)    ; push j onto stack
    000018 pushint 5000000     ; push 5000000 onto stack
    000020 iflt -12            ; jump backward if less than
    

    The loop containing i = i + 1 produces the following:

    000013 getlocal (REG_2)    ; push i onto stack
    000014 pushbyte 1          ; push 1 onto stack
    000016 add                 ; add the two
    000017 convert_i           ; coerce to integer
    000018 setlocal (REG_2)    ; save i back to register 2
    000019 inclocal_i (REG_3)  
    000021 getlocal (REG_3)
    000022 pushint 5000000
    000024 iflt -16
    

    i++ is faster than i = i + 1 here since inclocal_i modifies the register directly, without having to load the register onto the stack and saving it back.

    The loop becomes be far less efficient when you put it inside a frame script. Flash will store declared variables as class variables. Accessing those requires more work. The i++ loop results in the following:

    000017 getlocal (REG_0, this)   ; push this onto stack
    000018 dup                      ; duplicate it
    000019 setlocal (REG_2)         ; save this to register 2
    000020 getproperty i            ; get property "i"
    000022 increment_i              ; add one to it
    000023 setlocal (REG_3)         ; save result to register 3
    000024 getlocal (REG_2)         ; get this from register 2
    000025 getlocal (REG_3)         ; get value from register 3
    000026 setproperty i            ; set property "i"
    000028 kill (REG_3)             ; kill register 2
    000030 kill (REG_2)             ; kill register 3
    000032 getlocal (REG_0, this)   ; do the same thing with j...
    000033 dup
    000034 setlocal (REG_2)
    000035 getproperty j
    000037 increment_i
    000038 setlocal (REG_3)
    000039 getlocal (REG_2)
    000040 getlocal (REG_3)
    000041 setproperty j
    000043 kill (REG_3)
    000045 kill (REG_2)
    000047 getlocal (REG_0, this)
    000048 getproperty j
    000050 pushint 5000000
    000052 iflt -40
    

    The i = i + 1 version is somewhat shorter:

    000017 getlocal (REG_0, this)   ; push this onto stack
    000018 getlocal (REG_0, this)   ; push this onto stack
    000019 getproperty i            ; get property "i"
    000021 pushbyte 1               ; push 1 onto stack
    000023 add                      ; add the two
    000024 initproperty i           ; save result to property "i"
    000026 getlocal (REG_0, this)   ; increment j...
    000027 dup
    000028 setlocal (REG_2)
    000029 getproperty j
    000031 increment_i
    000032 setlocal (REG_3)
    000033 getlocal (REG_2)
    000034 getlocal (REG_3)
    000035 setproperty j
    000037 kill (REG_3)
    000039 kill (REG_2)
    000041 getlocal (REG_0, this)
    000042 getproperty j
    000044 pushint 5000000
    000046 iflt -34 
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have this code in my controller and want to test this code line
I've got unit test with this code: Excel.Application objExcel = new Excel.Application(); Excel.Workbook objWorkbook
I have this test code that just saves an XML file to a folder.
I have a problem, and I made this test code to show you my
This code works: class Test { public: Test(string name) : _name(name) {}; bool operator()()
This code is working on other test environment but not on mine. Do you
I write this code to get Dunnet anova post hoc test import rpy2.robjects as
I have this code that works in a unit test but doesn't work when
I have this code and I keep getting undefined if I test the selectedIndex.
I have this code inside a iframe: window.addEventListener('message', function(e){ if(e.data == 'test') console.log(e); },

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.