A friend of mine who still bothers with C++ explained to me once how C++ compilers used to use
a linker optimization where the name mangling would put the innermost identifiers first, and
the outermost identifiers last. That way if you had these two symbols:
By comparing "member1" vs "member2" first, your string match would figure out inequality
faster. If you go the other way, your string matches have to go through lots of common
namespace for every symbol before coming to the unique parts, and with BigLongMixedCaseNames
this can get fairly ridiculous.
Now, which way did the Intel Itanium C++ spec specify that name mangling had to occur? The
long way that links slowly, of course. And everybody else picked up the Itanium C++ spec
because nobody else bothered to write up a standard for this part of the language.