Say I have a code that needs to be optimized but easy to debug at the same time.
I would thus assign a string to every value I use.
Does the string inflict a major performance hit or is it turned into a constant reference obtained from string.Intern during JIT/AOT compilation, thus turning into a single simple instruction ?
Example:
In IL it would be ldstr "gazilion lines".
Is it during JIT/AOT compilation turned into something like ldsflda string.InternCache.ID_0000647516166
and const string ID_0000647516166 = "gazilion lines";
is added to string.InternCache ?
Yes, I could theoretically look into https://github.com/mono/mono but I have no idea how to find it.
Yes, I am mixing CIL, C# and whatever CIL is compiled into, but you get the idea.
Is ldstr guaranteed to be O(1)?
Yes it's "implementation detail" of the CLR but it would make sense if it was optimized this way.