C# makes an distinction between value types and reference types contrast to Java where all (except primitives types) are of reference semantics. The design decision, as I understand it, is mainly to make small objects more cache friendly, that is, for efficiency reasons.
my question is;
is there any study on how much efficiency gain does C# make by this design choice, based on evaluating real world projects.
Assuming the answer to the first question is that there is a measurable efficiency gap, will things change when JIT compilers come into play?