I noticed that integrate is sometimes faster



I have tried benchmarking pw.mac's integrate and pwdefint to see the timing for each command and sometimes pwdefint is actually 
slower that just using integrate.  So I have to correct myself and the help about the performance gain by using pwdefint instead of 
integrate.  In the Fourier series examples pwdefint is a lot faster but in my current test based upon my curvefit program below 
integrate is better than twice as fast.  Any ideas on why, I don't have any right now


(%i1) outchar:expr$

(%i16) curvefit(L,x,d):=
block(
    [len,i,j,k,eq],
    L:sort(L,lambda([x,y],x[1]<y[1])),
    degree:d,
    numpoints:length(L),
    numsets:numpoints-(degree+1),
    numintervals:numpoints-1,
    for eqset : 1 thru numsets do
    (
        for j : 0 thru degree do
        (
            eq[j]:sum(A[k]*L[eqset+j][1]^k,k,1,degree)+A[0]-L[eqset+j][2]
        ),
        ans[eqset]:solve(makelist(eq[j],j,0,degree),makelist(A[j],j,0,degree))[1],
        for j: 0 thru degree do D[eqset,j]:rhs(ans[eqset][1+j])
    ),
    intervaldelta:(L[1][1]+L[length(L)][1])/numintervals,
    for i : 0 thru numintervals-1 do interval[i+1]:[L[1][1]+i*intervaldelta, L[1][1]+(i+1)*intervaldelta],
    lf(i):=round(((numpoints-degree-2)/(numpoints-2))*i+degree/(numpoints-2)),
    if pwexpand='unitstep then
        sum((D[lf(i),0]+sum(D[lf(i),k]*x^k,k,1,degree))*(unit_step(x-interval[i][1])-unit_step(x-interval[i][2])), i, 1, 
numintervals)
    elseif pwexpand='signum then
        sum((D[lf(i),0]+sum(D[lf(i),k]*x^k,k,1,degree))*((signum(x-interval[i][1])+1)/2-(signum(x-interval[i][2])+1)/2),  i, 1, 
numintervals)
    else
     0
)$

(%i17) ratprint:false;
(expr17) false

(%i18) wxplot_size:[600,300];
(expr18) [600,300]

(%i19) PS:''(n:50,makelist([i/n*6,cos(1/n*2*i*%pi)*cos(1/n*8*i*%pi)],i,0,n))$
(%i20) f(x):=''(curvefit(PS,x,5))$

(%i25) showtime:true$float(integrate(f(x),x,-10,10));showtime:false$
Evaluation took 0.0000 seconds (0.0000 elapsed)
Evaluation took 22.9200 seconds (22.9200 elapsed)
(expr26) -0.0033644075483838

(%i29) showtime:true$float(pwdefint(f(x),x,-10,10));showtime:false$
Evaluation took 0.0000 seconds (0.0000 elapsed)
Evaluation took 58.7500 seconds (58.7500 elapsed)
(expr30) -0.0033644075483837