Since I often remind to people to optimize their code (or at least remove the redundant stuff they do) I found an interesting article about performance & paralellism: http://weblogs.asp.net/simonme/archive/2004/05/31/145024.aspx.
Quote:
Now 2GHz is a difficult thing to imagine for a human. Put simply that is 2 billion (Dr Evil pose) instructions per second at maximum throughput. So lets put this on our terms. Let's say once processor “clock cycle” is not 1/2,000,000,000 of a second but rather 1 second. On that scale accessing the nearby L1 on-chip cache takes 6 seconds, the off chip (L2) cache 2-3 minutes, and accessing main memory takes 3-4 weeks. Accessing the disk (just one disk access) by comparison takes a whopping 1 year on this timescale
Now think you call an DataAdapter to fill your dataset in every step of your for loop. Why? Because it's so simple to write dbAdapter.Fill(myDS).