[fpc-pascal] another fpc RAD: MSEide

Florian Klaempfl florian at freepascal.org
Wed Apr 19 21:38:04 CEST 2006

L505 wrote:
>>> Very nice compact stringlist in there to use...
>>> Standard Classes stringlist adds about 60K-70K to your exe/elf while CompactUtils
>>> PStrList only adds maybe 1-5KB.
>> Please compare what is comparable:
>> The Classes unit contains more than just the TStringlist and TList.
>> It contains a whole lot of other classes as well: streams, collections,
>> components, threads, and the whole streaming system. All things which
>> are commonly used in Object Pascal programs.
> KOL contains Streams, Threads, Stringlists,  TLists (actually PList) and almost every
> single function implmented in the Classes unit. They are pretty comparable. (CompactUtils
> doesn't contain threads yet because I didn't work on that area - just not enought time.).

KOL isn't comparable with the FCL. KOL has no real error handling just
one example:

//[function TList.Get]
function TList.Get( Idx: Integer ): Pointer;
   Result := nil;
   if Idx < 0 then Exit;
   if Idx >= fCount then Exit;
   Result := fItems[ Idx ];

function TFPList.Get(Index: Integer): Pointer; {$ifdef CLASSESINLINE}
inline; {$endif CLASSESINLINE}
  If (Index < 0) or (Index >= FCount) then

KOL simply exits, the FCL throws a proper exception with an error
message with a text. The error message probably adds more size to the
executable than the whole get function. KOL doesn't offer the same
functionality as the FCL. It's the price for the smaller size.

When buying hardware, you can only get two of the three:
speed, quality, price
When writing a compiler, you can get only two of the three:
speed, little memory usage, maintainability
When writing a library, you've to choose two of
speed, size, function
It's always a trade off. Neither KOL nor FCL is better, they are simply
designed different and comparsion is useless.

More information about the fpc-pascal mailing list