the other day a colleague of mine stated that using static classes can cause performance issues on multi-core systems, because the static instance cannot be shared between the processor caches. Is that right? Are there some benchmarks around proofing this statement? This statement was made in the context of .Net development (with C#) related discussion, but it sounds to me like a language and environment independent problem.
Thx for your comments.
I would push your colleague for data or at least references.
The thing is, if you’ve got shared data, you’ve got shared data. Whether that’s exposed through static classes, a singleton, whatever, isn’t terribly important. If you don’t need the shared data in the first place, I expect you wouldn’t have a static class anyway.
Besides all of this, in any given application there’s likely to be a much bigger bottleneck than processor caches for shared data in static classes.
As ever, write the most sensible, readable, maintainable code first – then work out if you have a performance bottleneck and act accordingly.