Originally Posted by Popoklopsi
Only because you don't use keyvalues doesn't mean all people don't use it.
KeyValues are not bad itself, it's the API that is really poor.
And if you want to parse valve's keyvalues, there is nothing to change!
And ADT tries are really not much better than keyvalues
The performance of KeyValues is poor. Hence why SourceMod wrote their own parser constructs for it (SMC).
Edit: Incidentally, keys are stored as a linked list in KeyValues, at least according to the documentation for FindLastSubKey (which SourceMod doesn't support).
As for the API for it, part of the problem with the API is that it was originally an OO API and was ported to SourcePawn. As far as I'm aware, SourcePawn doesn't include any of the changes made to it in the Source 2013 SDK (i.e. FOR_EACH_SUBKEY, GetBool, FindLastSubKey, RecursiveMergeKeyValues, etc...). Or even the KeyValuesCompiler