Simplify a heavy calculation

I’m aware that this may be regarded as too non-specific and with too little information, but I hope that someone will be able to help me nonetheless or to request information which would be imperative to do so.

I’m running a giant routine (and that’s why I won’t try to produce a MWE), of which the main evaluation line is something line

NMinimize[x, constraints, Method->"SimulatedAnnealing", WorkingPrecision->20, PrecisionGoal->15]

where constraints is a set of very complicated constraints, involving the evaluation of functions with hundreds (if not thousands) of terms.

The routine runs fine with the command above. The problem is that this is not enough precision (some constraints are not met even though they can be met. See, i.e., my question here), and if I increase it to WorkingPrecision->25, for instance, the notebook gets unresponsive and I have to end the process.

What could I generally do to optimize the code so that I can increase the precision without extrapolating my hardware’s capabilities? Or is it not the problem at all?