|
|
|
Back to newsletter 212 contents
Watching Ionut Balosin's excellent JPrime talk "Architecting for performance" (see the articles section below) I was drawn to his article suggesting renaming non-functional requirements as "quality attributes" which I agree is so much better a name for performance, reliability, maintainability, etc. I wholeheartedly support that renaming!
His talk is also the only one I've seen apart from my own 2017 Devoxx talk to provide good guidelines on performance techniques that apply to specific response time ranges, and these are so nice that I'm going to extract them here:
Response time | (Target name) | Achievability | Techniques |
---|---|---|---|
seconds | (multi-second latency) | easily achievable | small methods, minimize branching, use cohesion, abstract cleanly |
hundreds of milliseconds | (sub-second latency) | needs general performance tactics | as above plus: optimized data structures, algorithm complexity minimized, use batching and caching |
tens of milliseconds | (low latency) | needs specific performance tactics | as above plus: memory access patterns optimized for CPU caches, lock free algorithms, asynchronous processing, stateless, RamFS/TmpFS, GC and object lifecycle tuning |
under 1 millisecond | (ultra-low latency) | very specific techniques needed | as above plus: thread affinity, NUMA, Large pages, avoid false sharing, data-oriented design, disable c-states, ensure CPU cache friendly operations, no GC, zero copy |
Now on to our usual Java performance news section, tools, articles, talks. And of course the tips from this month's articles and talks, as ever are extracted into this month's tips page.
Java performance tuning related news.
Java performance tuning related tools.
Back to newsletter 212 contents