a) Arrays best for fixed sized collections, especially when referencing them with numbers.
Bags are best when you don't care about the order and indexing.
Dictionaries are best when you are using a hash-referencing collection; association; indexing with objects instead of numbers.
Arrays are also preferred when you are doing iteration. An OrderedCollection would be perferred over an array if you were adding numbers by index but the number of elements were variable. Jared Parsons
b) Arrays must iterate through structure to compare. Sets are internally hash tables, so only the hash table needs to be searched.
c) OC's are like Java Vectors. It takes a little more overhead. When adding, above some quick internal overhead, when the internal array isn't big enough the array must grow and allocate more memory. When deleting, there must be a point where memory is reclaimed and that means some of the internal array must be moved and recopied.
c)
OrderedCollections are slower than Arrays when they are growing. They start off small and double in size every time they run out of room which takes a lot of overhead. OC are almost as fast as Arrays once they have grown to the correct size. OC will always be slower because Arrays at: put: is a primitive and OC's add: it a message and it also does bounds checking. Jared Parsons