If you need to insert a large number of objects of dis-associated objects then you might follow the advice you have already in earlier posts.
On the other hand, if you need to insert a large number of associated (aggregated) objects, such as invoices with their line items and their line item details, then you might design the objects with cascading insert and update. This would allow you to save many records by saving a root object, in the example above saving an invoice object would also save all of its children and their children. This is much faster than looping through the objects and saving them individually.