The Sample Variance $s^2$ of a signal $\mathbf{y}$ with sample average $\mu$ may be computed as: $$ \begin{align*} s^2 &= \frac{1}{N-1} \sum_{i=0}^N (y_i - \mu)^2 \\ &= \frac{1}{N-1} \sum_{i=0}^N \left( \mu^2 - 2 \mu y_i + y_i^2 \right) \\ &= \frac{1}{N-1} \left[ N \mu^2 - 2 \mu \sum_{i=0}^N y_i + \sum_{i=0}^N y_i^2 \right] \\ &= \frac{1}{N-1} \left[ N \left(\frac{1}{N} \sum_{i=0}^N y_i \right)^2 - 2 \left(\frac{1}{N} \sum_{i=0}^N y_i \right) \sum_{i=0}^N y_i + \sum_{i=0}^N y_i^2 \right] &\left( \mu = \frac{1}{N} \sum_{i=0}^N y_i \right) \\ &= \frac{1}{N-1} \left[ N \left(\frac{1}{N} \sum_{i=0}^N y_i \right)^2 - 2 N \left(\frac{1}{N} \sum_{i=0}^N y_i \right)^2 + \sum_{i=0}^N y_i^2 \right] \\ &= \frac{1}{N-1} \left[ -N \left(\frac{1}{N} \sum_{i=0}^N y_i \right)^2 + \sum_{i=0}^N y_i^2 \right] \\ &= \frac{1}{N-1} \left[ -\frac{1}{N} \left(\sum_{i=0}^N y_i \right)^2 + \sum_{i=0}^N y_i^2 \right] \end{align*} $$$$ \begin{align*} s^2 &= \frac{1}{N-1} \sum_{i=1}^N (y_i - \mu)^2 \\ &= \frac{1}{N-1} \sum_{i=1}^N \left( \mu^2 - 2 \mu y_i + y_i^2 \right) \\ &= \frac{1}{N-1} \left[ N \mu^2 - 2 \mu \sum_{i=1}^N y_i + \sum_{i=1}^N y_i^2 \right] \\ &= \frac{1}{N-1} \left[ N \left(\frac{1}{N} \sum_{i=1}^N y_i \right)^2 - 2 \left(\frac{1}{N} \sum_{i=1}^N y_i \right) \sum_{i=1}^N y_i + \sum_{i=1}^N y_i^2 \right] &\left( \mu = \frac{1}{N} \sum_{i=1}^N y_i \right) \\ &= \frac{1}{N-1} \left[ N \left(\frac{1}{N} \sum_{i=1}^N y_i \right)^2 - 2 N \left(\frac{1}{N} \sum_{i=1}^N y_i \right)^2 + \sum_{i=1}^N y_i^2 \right] \\ &= \frac{1}{N-1} \left[ -N \left(\frac{1}{N} \sum_{i=1}^N y_i \right)^2 + \sum_{i=1}^N y_i^2 \right] \\ &= \frac{1}{N-1} \left[ -\frac{1}{N} \left(\sum_{i=1}^N y_i \right)^2 + \sum_{i=1}^N y_i^2 \right] \end{align*} $$
Below is an example in C++ code that implements the above equation. It may not be completely optimized, but it should be fairly efficient:
double sample_variance(double *signal, unsigned int signal_length) { double sum = 0.0; double sum2 = 0.0; for (unsigned int i=0; i<signal_length; i++) { sum += signal[i]; sum2 += signal[i]*signal[i]; } double N = (double)signal_length; return (sum2 - sum*sum/N)/(N-1.0); }