How To Improve Performance of Object De-allocation (185990)



The information in this article applies to:

  • Microsoft Visual Basic Learning Edition for Windows 6.0
  • Microsoft Visual Basic Professional Edition for Windows 6.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition for Windows 5.0
  • Microsoft Visual Basic Learning Edition for Windows 5.0
  • Microsoft Visual Basic Professional Edition for Windows 5.0
  • Microsoft Visual Basic Enterprise Edition for Windows 5.0
  • Microsoft Visual Basic Standard Edition for Windows 4.0
  • Microsoft Visual Basic Professional Edition for Windows 4.0
  • Microsoft Visual Basic Enterprise Edition for Windows 4.0

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.

Modification Type:MinorLast Reviewed:7/1/2004
Keywords:kbhowto KB185990