My application makes heavy use of TList, so I was wondering if there are any alternative implementations that are faster or optimized for particular use case.
I know
Are you using the Notify procedure? If not, make your own TList implementation. Because of the Notify procedure, the TList.Clear (which is called at destruction) is a O(n) operation. The TList.Clear method calls SetCount which in turn calls Delete for all the items it contains so the Notify procedure will be called for every removed item. When you don't need to override the Notify method, you can adjust the SetCount procedure to not call Delete. This can save you the time of 15.766.012 - 10.630.000 = 5.136.012 Delete calls.
NB: the performance gain you get will never be as big as the performance gain you get by sorting your list and optimizing your remove procedure, as suggested by Mason Wheeler. Unless the list you have contain a very small number of items and the compare function takes a lot of time.