Have you used Performance Recorder to diagnose where the problem is ?
If it's a live connection to a database, is there any way the calculation can be done in the database as well ?
I second Chris's comment, take a performance recording to find out where you are taking the most time.
With regards to extracts, when you optimize the extract the calculations will usually be materialized. Table calculations are the exception as they are reliant on the data in the worksheet and will change depending on how it is set up.
Another thing to check out: POST data
Hope this helps!