It seems to me that TC reads the user commands from file and does not keep it in memory, because if you change a user command manually in the usercmd.ini or the wcmd_xxx.ini file with a text editor, TC recognizes the change without having to be restarted. Unlike when wincmd.ini is changed the same way.
So a 2000 command limit doesn't seem to be necessary.
License #524 (1994)
Danish Total Commander Translator
TC 11.51 32+64bit on Win XP 32bit & Win 7, 8.1 & 10 (22H2) 64bit, 'Everything' 1.5.0.1391a
TC 3.60b4 on Android 6, 13, 14 TC Extended Menus | TC Languagebar | TC Dark Help | PHSM-Calendar
They are loaded into a fixed array of pointers to the strings in some functions, which is usually much faster than a dynamic list. The limit is 4 times the number of internal commands, so I thought that no one would ever reach it...
Samuel wrote:There is no speed difference if you create an array with dynamic size. You do not need to create a list...
Agreed. Dynamic arrays usually have possibility to set reserved size - so it can be used as first-time limit (it user exceeds this limit, he will need to wait while array is reallocated).