Microsoft KB Archive/185990

= How To Improve Performance of Object De-allocation =

Article ID: 185990

Article Last Modified on 7/1/2004

-

APPLIES TO


 * Microsoft Visual Basic 6.0 Learning Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition
 * Microsoft Visual Basic 5.0 Control Creation Edition
 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 4.0 Standard Edition
 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 Enterprise Edition

-



This article was previously published under Q185990



SUMMARY
By default, object de-allocation in arrays and collections can be inefficient when there is a large number of objects. This article describes a technique for improving de-allocation performance.



MORE INFORMATION
When de-allocating a large number of objects in a collection or an array, performance of the de-allocation process can be improved if objects are de-allocated in the reverse order of their creation--this results in linear performance. For arrays of objects this is simple; however, for collections it can be difficult to determine the allocation order. In this case, the following code provides you with good to reasonable performance: Public Sub DeallocCollection(colSource as Collection) Dim lIndex as Long Dim lMax   as Long

lMax = colSource.Count ReDim aryLocal(lMax) as object For lIndex = 1 to lMax if isObject(colSource.index(1)) then _ Set aryLocal(lIndex) = colSource.index(1) colSource.Remove(1) Next set colSource = nothing

For lIndex = lMax to 1 step -1 set aryLocal(lIndex) = Nothing Next End Sub The performance improvement depends upon the level of fragmentation in the collection.

Additional query words: kbDSupport kbdss VBKBObj kbVBp400 kbVBp500 kbVBp600 kbVBp

Keywords: kbhowto KB185990

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.