Why is FFT-based convolution efficient only for signals of large size? According to the documentation of scipy.signal.fftconvolve

This is generally much faster than convolve for large arrays (n &gt;
~500), but can be slower when only a few output values are needed, and
can only output float arrays (int or object array inputs will be cast
to float).

Why does fft-based convolution is efficient only for large signals and how large they have to be (why the choice n &gt; 500 is used)?
The direct convolution approach has a complexity proportional to $n^2$
The FFT based approach has complexity $n \log(n)$.
Since there are unknown pre-factors and the complexity only holds asymptotically, the only thing one can infer from the complexities is that only for large enough $n$ the FFT approach becomes more efficient.
The $n=500$ threshold is thus probably determined empirically.