OLE Automation in JavaScript: Performance Tips | WebReference

OLE Automation in JavaScript: Performance Tips

OLE Automation in JavaScript

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";


Produced by Yehuda Shiran and Tomer Shiran

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

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