Const Correctness in Java

I started re-reading the old standby Java Concurrency in Practice to refresh some of the foundational concepts of Java multi-threading.  Early in the book, there is a section proposing the strategy of designing immutable objects in order to reduce or eliminate the likelihood of all the crazy things that can happen in the Java multi-threaded universe, such as seeing stale values, losing updates or seeing objects in an inconsistent state and I was once again struck with the thought of how much eas...
More

What is Mechanical Sympathy?

The term "Mechanical Sympathy" has really come into vogue lately.  It was introduced into the world of low latency/high performance programming by Martin Thompson, who in turn credits the race driver Jackie Stewart with coining the term.  The idea is that in order to design high performance systems, the engineers can't be ignorant of the underlying implementations. This, of course, is not news to any experienced performance engineer.  As a matter of fact, as early as 1974, Niklaus Wirth, the ...
More

Tune your performance with graphs

Often when I come onto a project to help with performance problems, I am presented with statistics gathered about transaction timings. Most often, I will be presented with an average, sometimes with a more complete statistical picture which includes min/max/median/stddev. Unfortunately, these numbers seldom tell me anything actionable which can be used to analyze the system for performance improvements. This is why the first thing I typically do is set these statistics aside and instead ask f...
More