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: https://www.webreference.com/js/column55/performance.html