> Yes it will, because the reallocations don't happen as often. > The sorting introduces an overhead anyway, whether you set capacity or not.
Yes, but I was talking about slowness in general, not just from the heap. And TStringList with those huge internal list has to move on avg half of the array. If TStringList had an extra indirection (array of ptr to blk of ptrs) it would be less so. > The correct procedure IMHO is > - Set capacity > - Load > - Sort > I tested such things with an N^3 algorithm for my daytime job, and the > difference is very noticeable. With a single array or a multilevel one? > All this doesn't exclude that a specialized class may be more suitable for > the job. To be honest, the only good point of TStringList seems to be that it is default available on all Object Pascal. The specialised stuff (splitting strings) is also plagued with oddities. (most notably the fact that characters under space are always used as separator) > I just want to illustrate that, if programmed correctly, TList, > TStringList and friends can still get you a long way... I think that the lengths to which people will go to stick to them paints what is needed to make a serious effort to make them legacy. There should be a set of container classes in a separate unit (a unit not existing in Delphi most notably) that is Open Source and works on Delphi too. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal