Further to my post Poor performance for large form with lots of empty fields, I've just about wrapped up a custom plugin that replaces a bunch of fields on this form with some compound fields, thus reducing both the number of empty fields seen by Gravity Forms and the number of fields used in calculations. Doing this has had a dramatic effect on processing time.
On my dev box, the original form was taking about 200s to process with 120 empty fields, some used in calculations.
Reducing the number of empty fields by replacing 150 fields (up to 120 empty) with 20 compound fields (up to 16 empty) reduced the processing time from 200s to 75s.
Rewriting the calculations for this form so that they used server-side calculated totals on gform_pre_render (which was required for the new compound fields -- how many laptops are there in a classroom field?) enabled the calculations to become very simple, just (students + class participants + additional participants), i.e. adding together 3 elements instead of 30. This reduced processing time to 3s. Three seconds. :)
One of the biggest parts to this is, in my opinion, that GFCommon::get_submitted_fields() is called many times during the course of GFCommon::replace_variables(), and each call requires an iteration over the form's fields triggering any filter hooks applicable along the way. I'm not sure what you can do about that, but it certainly seems to be where a lot of processing time goes.
Let me know if you need any further information about this from me. I've already sent their original form, so you will have seen what they were doing (and in particular, the calculations involved for the fields on the final page).