Remove collection items from the beginning

Remove collection items from the beginning

There are many different ways to delete all the items in a collection, but some of them are much faster than the others. Let’s start with a collection that holds 10,000 items:

Dim col As New Collection, i As LongFor i = 1 To 10000    col.Add i, CStr(i)Next

You can delete collection items starting from the end, as in:

For i = col.Count To 1 Step -1    col.Remove iNext

but it turns out that removing items from the beginning, as in:

For i = col.Count To 1 Step -1    col.Remove 1Next

is about two orders of magnitudes faster (0.06 seconds instead of 4.10 seconds on my machine). The reason is that when you reference a item near the end of the collection, VB has to follow the entire chain of items, starting with the first one.

Even more interesting, if you double the number of items in the collection, the time necessary to remove them starting from the end grows almost exponentially, while the time necessary to remove them from the beginning grows linearly (0.12 seconds instead of about 24 seconds).

One last note: the fastest way to remove all the items in a collection is to destroy the collection itself:

Set col = New Collection

The above statement takes only 0.05 seconds when applied to a collection that holds 20,000 items, which is about twice as fast as the most efficient method based on a loop.

Share the Post:
data observability

Data Observability Explained

Data is the lifeblood of any successful business, as it is the driving force behind critical decision-making, insight generation, and strategic development. However, due to its intricate nature, ensuring the

Heading photo, Metadata.

What is Metadata?

What is metadata? Well, It’s an odd concept to wrap your head around. Metadata is essentially the secondary layer of data that tracks details about the “regular” data. The regular