On the efficiency of JavaScript loop body variable declaration and initialization

Source: Internet
Author: User
Tags garbage collection

For the efficiency of the Declaration and initialization of the loop body variable, the simple test code that will be executed is as follows:

functionTest (N) {console.time (' Internally initialized ');  for(vari = 0; I < n; i++) {Let a=i; } console.timeend (' Internally initialized '); Console.time (' Externally initialized '); Let a= 0;  for(vari = 0; I < n; i++) {a=i; } console.timeend (' Externally initialized '); Console.time (' Externally declared ');    Let B;  for(vari = 0; I < n; i++) {b=i; } console.timeend (' Externally declared ');}

Chromium 58.0.3029.110 test results, without considering more test conditions, environmental factors and so on:

Test (1000000000) Script snippet #2:6 internally Initialized:2894.2080078125msscript snippet #2: Externally Initialized:2867.099853515625msscript snippet #2: Externally declared:2895.260986328125msundefinedtest (100000000 Script Snippet #2:6 internally Initialized:355.6640625msscript snippet #2: externally initialized: 296.761962890625msScript snippet #2: Externally declared:296.949951171875msundefinedtest (10000000) Script Snippet # 2:6 Internally Initialized:68.672119140625msscript snippet #2: Externally initialized:43.97705078125msscript Snippet #2: Externally declared:35.217041015625msundefinedtest (1000000) Script snippet #2:6 internally initialized: 12.23388671875msScript snippet #2: Externally initialized:10.057861328125msscript snippet #2: Externally declared: 8.0849609375msundefinedtest (100000) Script snippet #2:6 internally Initialized:0.94873046875msscript snippet #2:13 Externally Initialized:1.088134765625msscript snippet #2: Externally declared:0.931884765625msundefinedtest (10000) Script snippet #2:6 internally Initialized:0.1181640625msscript snippet #2: Externally Initialized:0.176025390625msscript snippet #2: Externally declared:0.145751953125msundefinedtest (+) Script Snippet #2:6 internally Initialized:0.044921875msscript snippet #2: Externally initialized:0.04296875msscript Snippet #2: Externally declared:0.046875msundefinedtest (+) Script Snippet #2:6 internally initialized: 0.025146484375msScript snippet #2: Externally initialized:0.033935546875msscript snippet #2: Externally declared: 0.02783203125msundefinedtest Script Snippet #2:6 internally Initialized:0.024169921875msscript snippet #2:13 Externally Initialized:0.024169921875msscript snippet #2: Externally declared:0.02197265625msundefinedtest (1) Script Snippet #2:6 internally Initialized:0.02490234375msscript snippet #2: externally initialized: 0.032958984375msScript snippet #2: Externally declared:0.030029296875msundefined

Firefox 54.0 test results, without considering more test conditions, environmental factors, and so on:

Test (1000000000) internally initialized: Timer starts internally initialized:768.81msexternally initialized: Timer starts externally Initialized:697.8msexternally declared: Timer starts externally declared:704.16msundefinedtest (100000000) Internally Initialized: Timer starts internally initialized:131.84msexternally initialized: Timer starts externally initialized: 84.42msExternally declared: Timer starts externally declared:70.98msundefinedtest (10000000) internally initialized: Timer starts internally initialized:19.92msexternally initialized: Timer starts externally initialized:17.09msexternally declared: Timer starts externally declared:15.33msundefinedtest (1000000) internally initialized: Timer starts internally initialized: 3.46msExternally Initialized: Timer starts externally initialized:3.06msexternally declared: Timer starts externally declared: 2.75msundefinedtest (100000) internally initialized: Timer starts internally initialized:1.49msexternally initialized: Timer starts externally initialized:1.11msexternally declared: Timer starts externally declared:2.14msundefinedtest (10000) InternaLly initialized: Timer starts internally initialized:1.03msexternally initialized: Timer starts externally initialized: 1.11msExternally declared: Timer starts externally declared:1.11msundefinedtest (+) internally initialized: Timer starts internally initialized:1.25msexternally initialized: Timer starts externally initialized:0.84msexternally declared: Timer starts externally declared:0.82msundefinedtest (internally) initialized: Timer starts internally initialized: 1.29msExternally Initialized: Timer starts externally initialized:1.02msexternally declared: Timer starts externally declared: 1.21msundefinedtest internally initialized: Timer starts internally initialized:1.29msexternally initialized: Timer starts externally initialized:1.1msexternally declared: Timer starts externally declared:1.64msundefinedtest (1) Internally Initialized: Timer starts internally initialized:1.15msexternally initialized: Timer starts externally initialized:0.97msexternally Declared: Timer starts externally declared:0.89msundefined

There are no obvious differences in three ways . Parsing from general logic, declaring and initializing are two operations in which any one operation takes more time, but it is a good programming habit to initialize a variable when it is declared, and an uninitialized variable that directly participates in the operation often gets unexpected results, such as (undefined) + 1 = NaN, ( Undefined) + ' string ' = ' undefinedstring ', of course many programming languages are initialized with default type values for uninitialized variables, while the JavaScript default value is undefined. In addition, storage performance and garbage collection mechanisms are not explored here.

On the efficiency of JavaScript loop body variable declaration and initialization

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.