Apologies in advance if my question doesn't make sense. I'm not the most fluent person in signal processing. 

I have an array of time domain values that I would like to apply a time delay to by computing the fft then apply the Fourier transform 
$f(t - \tau) = F(\omega)\exp(-i \omega\tau)$ and then compute the inverse fft to get my delayed signal. 

My problem is that the delay is very large (three times further than the range of my original signal) so in order to get the delayed signal I have been zero padding my original signal by a significant amount which greatly increase the computation time. 

Is there a better way to compute the delay using Fourier transform without the need to zero pad?