Time for another quiz for you all, this is just a micro-benchmark so we want to be careful not to conclude too much but it's useful for understanding the costs and their origins. Consider the two snippets shown below:
// choice #1, using Generics
int total = 0;
List<int> li = new List<int>();
for (i = 0; i < 20; i++) li.Add(i);
// start timer
for (i = 0; i < 10000000; i++) foreach (int el in li) total += el;
// end timer
// choice #2, using ArrayList
ArrayList al = new ArrayList();
for (i = 0; i < 20; i++) al.Add(i);
for (i = 0; i < 10000000; i++) foreach (int el in al) total += el;
Now try to answer these question (no peeking at the comments until you've done your work :))
Q1: Which is faster?
Q2: How much faster?
Q3: Why is it faster?
Q4: What price do we pay for this speed? Quantify it if you can.
Answers and discussion soon :)