Inserting and deleting elements from an array is O(n) since it uses contiguous storage and has to shunt along all the elements after the affected index. However adding and removing items from the end is fast, because there is nothing else to shunt along. If you can rearrange it to only modify the end it should be faster. Another technique is if you have a fixed size array you can cycle through the same set of elements without inserting/deleting anything (i.e. a circular buffer).
Dictionaries have per-key storage which means nothing else needs to be modified to add and remove items. Arrays are usually faster if you need to iterate them or do lots of random access, but inserting/removing anywhere apart from the end is usually a pretty bad case for arrays.
This is all standard computer science stuff, it's the same in pretty much every language.
Thanks for the info Ashley. I did not know that adding to arrays att back would make that much of a difference. But in this case, where I constantly need to update a kind of custom (SOL) list of UID's it seems dictionary would be better, as in an array, i could be deleting an entry anywhere in the array... and whenever I delete an entry it has to update the the array.
In this particular test I will be deleting any UID entry that is outside the radius of 50 pixels.
I will make a mental note, that I should always add or delete stuff from an array from the back if possible.