There are some good articles on the web / stackoverflow about the usage of the 'checked' keyword vs. the compiler option 'Check for arithmetic overflow/underflow', like those:
http://www.codethinked.com/c-trivia-what-no-overflow
Why doesn't C# use arithmetic overflow checking by default?
Best way to handle Integer overflow in C#?
Still I don't know which one I should use. Per default I would prefer to go with the compiler option to be always safe, to not clutter my code with the unchecked keyword, not to forget it in some places and finally it is not very commonly used, so probably unknown to many developers.
But then how bad is the actual performance hit I take? I guess MS set the default not to do the overflow checking for a good reason. Does the compiler option only concern my code or also every consumed libraries and the framework itself?