Knowledge Base

How To Improve Performance of Object De-allocation

Article ID: 185990

Article Last Modified on 7/1/2004


APPLIES TO


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