Maybe I should make that limitation in order to have Apples to Apples comparison. Or is this irrelevant since a TStringList being accessed by an index is quite fast?
The index access is fast. Really fast. But make sure, you start with "Stringlist.Capacity := 40000;" or whatever you need.
Of course if you strings end up scattered over many memory pages, then they can cause extra page faults. But that is more about large amount of data, than a Stringlist.
If you want every last microsecond... Use pchars, saves the time of refcounting. But adds plenty of work.
Mind that an "IndexOf(name)" is slow.
Ok you can use a sorted list the it is O(log n) but then you pay the cost for sorting.
If you need to find a list by name quite often: use a hash map.