As I said on a previous post I am now building SSIS packages in anger on a proper project and learning stuff all the time. Here's some important lessons learned from today.
1. Use DTExec. Allan and Darren have already made the point (http://www.sqlis.com/default.aspx?84) but its worth reiterating. Run your packages using DTExec if at all possible. I had a package execute in 845 seconds when executed from BIDS, 201 seconds from DTExec.
2. Beware of raising events. In the same package I was using a script component to add rows into the pipeline from a web service. I generated 2 OnInformation events for each row put into the pipeline. I didn't think this would be much of an overhead because there was only 103 rows but when I removed the OnInformation events the execution time reduced again from 201 seconds to 54 seconds. This is largely because of the heavy processing I do in my eventhandlers but it demonstrates that if you're doing this then you need to be wary.