Voigt profile fits in *Mathematica* seem terribly slow. For an example data set with 81 points a corresponding fitting procedures for Voigt fits is >1000 times slower than for Gaussian or Lorentzian profile. How can Voigt profile fits be speed up?

Here is what I do. First we define the Voigt and Gaussian profile. As *Mathematica* often complains about `δ` and `σ` being <0, I use Abs instead of constraining the model as this proved faster. In addition I use the compile command to make the function even faster.

    voigtprofile = Compile[{{δ, _Real, 0}, {σ, _Real, 0}, {A, _Real,0}, {ν0,_Real, 0}, {ν, _Real, 0}}, A PDF[VoigtDistribution[Abs@δ, Abs@σ], ν - ν0]];
    gaussian[σ_, A_, ν0_, ν_] := Return[A PDF[NormalDistribution[ν0, σ], ν]];

Then I create noisy example data sets with a bit of noise:

    noisyDataV = {#, 
     voigtprofile[0.15, 0.1, 1, 0, #] + RandomReal[{-0.1, 0.1}]} & /@ Range[-2, 2, 0.05];
    noisyDataG = {#, gaussian[0.1, 1, 0, #] + RandomReal[{-0.1, 0.1}]} & /@
    Range[-2, 2, 0.05];

And we use NonlinearModelFit to fit the data with excellent start parameters:

    tv = AbsoluteTiming[vfit = NonlinearModelFit[noisyDataV, 
     voigtprofile[δ, σ, 
      A, ν0, ν], {{δ, 0.15}, {σ, 0.1}, {A, 
       1}, {ν0, 0}}, ν];]
    tg = AbsoluteTiming[gfit = NonlinearModelFit[noisyDataG, 
      A, ν0, ν], {{σ, 0.1}, {A, 1}, {ν0, 
       0}}, ν];]

And if we compare the required time for fit:


I get values between 1000 and 6000, which is terrible. In addition, selecting a fit `Method` e.g. `NMinimize` or other does at best yield the same result.

As this minimal example is just a very simple example, times scale up to unbearable long times for more realistic scenarios with real data.
I'm glad for any hint on how to speed this simple example up.