spacer


Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com


home / experts / javascript / column55


OLE Automation in JavaScript

Developer News
Eclipse Helios Update Brings New PHP Tools
Internet Explorer 9 Ups Standards Support
JBoss Portal 5 Release Easier to Use

Performance Tips

Tidy Up

Since we're dealing with heavy object models (e.g., Word.Application) and application instances, it is extremely important to keep an eye on system resources. Once we've finished handling an instance of an application, we must get rid of it in order to free the memory taken up by the instance of the object. The only way doing this in JScript is the Quit() method of the program's Application object. Here's an example:


var wdApp = new ActiveXObject("Word.Application");
wdApp.Quit(); // tidy up


In Visual Basic, unlike JScript (and VBScript), setting the object variable to Nothing is enough to free the memory. Furthermore, if there are no other "live" references to the object, such an assignment operation causes the application to shut down. Unfortunately, in JScript we must use the Quit() method to tidy up after we have finished using an object. Setting the variable to a zero-length string or null is just good practice, nothing more.


Avoid "Dots"

Every dot that you place in your script represents at least one procedure call that has to be executes in the background. The best solution is to locally cache object references. This tip applies to objects in general, and specifically to Automation objects. Take a look at the following script segment:


var exApp = new ActiveXObject("Excel.Application");
exApp.Workbooks(1).Worksheets(1).Cells(1, 1).Value = "First Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 2).Value = "Second Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 3).Value = "Third Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 4).Value = "Fourth Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 5).Value = "Fifth Cell";


The following code shows how to do this in a much more efficient way:


var exApp = new ActiveXObject("Excel.Application");
var exWbook = exApp.Workbooks(1).Worksheets(1);
exWbook.Cells(1, 1).Value = "First Cell";
exWbook.Cells(1, 2).Value = "Second Cell";
exWbook.Cells(1, 3).Value = "Third Cell";
exWbook.Cells(1, 4).Value = "Fourth Cell";
exWbook.Cells(1, 5).Value = "Fifth Cell";


 




http://www.internet.com


Produced by Yehuda Shiran and Tomer Shiran

webref The latest from WebReference.com Browse >
Flashmaps' DynamicLocator: Interactive Maps for Small Areas · Flashmaps' AreaSelector: Interactive Maps for Wide Areas · The DB Mapper: Interactive Street-level Maps of U.S. and Canada
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
MS Access and MySQL · Cisco AutoQoS: VoIP QoS for Mere Mortals · While VoIP Adoption Explodes in Enterprise, Carrier Spending Lags


Created: January 10, 2000
Revised: January 10, 2000

URL: http://www.webreference.com/js/column55/performance.html