I have a physical system which takes a number of inputs $x\_i$ and produces an output $error$.

$$
 Y = f(x\_1, x\_2, x\_3, .. x\_{1000})
$$

The function $f()$ can be evaluated by running a compute-intensive simulation of a model.

I want to find the $x\_i$ to which $Y$ is most sensitive. In practice, I want to optimize the values for the few input variable which would give maximum return (in terms improving the system performance).

I can think of randomly changing each of the $x\_i$ by a small amount around the existing value and record the output. Repeat the experiment by few hundred times and compute the correlation between $x\_i$ to $Y$ and pick the inputs with high correlation.

I am wondering if there is a more formal method to achieve this.

One important constraint in my particular problem is that each model evaluation requires a computationally intensive simulation of about 10 minutes and $x\_i$ is of size $1000$ to $2000$.