Ho provato con entrambi ma non cambia nulla.
Stesso risultato utilizzando i diversi livelli di ottimizzazione.
Anche passando da dwarf2 a "dwarf2 con i set" e a dwarf3 la situazione non è migliorata (ho solo notato che con fpDebugger e dwarf3 i nomi delle chiamate nel tracelog rispettano il case originale invece di essere tutte in maiuscolo).
Non ho cronometrato il tutto ma è evidente che con qualsiasi combinazione è molto più lento rispetto a fpc 3.0.4. Non so sotto Linux, per ora ho provato solo su windows.
Nel dettaglio, è l'esecuzione di BackTraceStrFunc che è diventata molto più lenta:
Result := BackTraceStrFunc(ExceptAddr);
Frames := ExceptFrames;
for i := 0 to ExceptFrameCount - 1 do
Result := Result + sLineBreak + BackTraceStrFunc(Frames[i]);
E altra cosa strana: se rieseguo il codice con l'errore che scatena il tracelog, la procedura diventa un fulmine. E' come se alla prima esecuzione venisse creata qualche struttura dati di appoggio con grande dispendio di risorse che poi viene però conservata in qualche cache per poter essere riutilizzata.
Son solo speculazioni le mie ovviamente... ancora brancolo.