A partir do post CodeGear, please release the TClientDataSet (midas.dll) code! no Fórum ???delphi.non-technical???, Andreas Hausladen analisou o problema de performance do TClientDataSet, no qual ele comenta no post What a bad ReallocMem can do to Midas, que ele explica que analisando a partir do assembler do MidasLib.dcu, descobriu que a realocação de memória não era feita de forma eficiente, então ele criou a unit Midas Speed Fix, que faz um patch em memória, redirecionando a realocação de memória para os métodos do FastMM.

Para se ter idéia, este é o teste que ele fez e publicou, programa teste em anexo ao QC 7102
[renomeie Vessels200.xml para Vessels.xml nos fonte e coloque um loop "for 1 to 10 do" antes de  lientDataSet1.AppendData"]

Unit MidasLib do Delphi 2009:

1. Chamada: 858ms
2. Chamada: 1966ms
3. Chamada: 3182ms
4. Chamada: 4414ms
5. Chamada: 5678ms

Unit MidasLib do Delphi 2009 mais a unit MidasSpeedFix.pas:
1. Chamada: 406ms
2. Chamada: 265ms
3. Chamada: 374ms
4. Chamada: 312ms
5. Chamada: 281ms

Com estes números, não preciso comentar mais nada, então se você utiliza TClientDataSet, deve baixar esta unit e adicionar aos seus projetos.

MidasSpeedFix.pas, suporta desde o Delphi 6 até o 2009. E no mesmo post que tudo isto começou, Nick Hodges comentou que a correção já foi adicionada aos fontes e que estará na próxima atualização do Delphi 2009.

Referências

Bookmark and Share: