I just want to reiterate that if you are in a situation where you need to make multiple Cut operations against a single solid (simulating CAM operations) you may want to first combine all of your cut operations into a single compound and then subtract that compound from your starting shape:
// Make the compound by adding all the solids that will need to be cut out
// of a single shape (in my case a starting workpiece - CAM application)
// Get the solid describing this cut operation
// Add it to the compound we are building
// Cut the combined compound from the model shape (created elsewhere)
shapeModel = BRepAlgoAPI_Cut(shapeModel, cutOpCompound);
The performance improvement is huge, for cutting out 96 cylinders out of a rectangular shape it took 120 sec to cut out piece by piece and 14 seconds to cut out when combining all operations into a single compound.
If anyone has any ideas on how to improve the performance even more I would really like to hear about it. For my application (CAM) all I need is to cut various shapes from one face of a solid.