Cliff Click, a veteran JVM compiler engineer, writes on Java performance, modern hardware, and career topics for introverts.
Commenters call his blogs a goldmine of high-performance JVM information, known to the HFT crowd; other comments mostly fix links to his talks.
If you are part of the HFT crowd who uses the JVM then you know who the author, Cliff Click, is.
His Blogs (former and current) are goldmines for high performance JVM information.
http://www.azulsystems.com/blog/author/cliff
http://www.cliffc.org/blog/
I had one CTO of a public HFT firm tell me that short of FPGA's Azul's pause-less GC (https://www.azul.com/products/zing/pgc/) was the biggest performance win they'd had in the past few years, note: this was a few years ago.
EDIT: someone emailed asking for how HFT firms write their java code. I haven't written java in 3 years so I'm probably not the best person to author a list but this is what I'd include:
In order of importance:
- Measure, measure, measure. Every HFT firm can tell you to the nanosecond, as much as that's possible, what their time is from receiving a packet to when it's replied to. Focus as much, if not more on the 95%, 99% times as the average time.
This time increasing is considered a bug in the same way that an app crashing due to user input is considered a bug, which is to say that you just don't ship with this kind of bug.
- no GC's, everything else starts to become less important if the GC is called every 30 seconds. Some guys will have only one GC call a day, which means you have a really large Eden GC space
- short call stacks, and no recursion
- one physical core per thread
- non locking data structures and use the one writer principle where possible
- don't use the kernel if…
Innaresting. There was some blogging last year about consistency vs. availability issues, similar to what akka, riak, cloud Haskell etc are confronting. It occurs to me you need to do Bayesian inference to order packets on partition
http://www.cliffc.org/blog/2012/05/
http://www.cliffc.org/blog/2012/06/21/progress-vacation/
___________
very readable code, also, no generics in the few files i looke at. And, like twitter, scalaz, akka etc they write their own Futures
https://github.com/0xdata/h2o/blob/8f6d81abeea8ef3221969d8aad57d43927250b66/src/main/java/water/Futures.java
No, it's not even that. The linked article (http://www.cliffc.org/blog/2013/08/15/tcp-is-unreliable/) at the bottom tells you what's actually going on.
The only thing slightly fishy is that the peer application didn't receive any connection attempt, but if you're anyway quite overloaded, e.g. running out of file descriptors, that may well happen.
Here is a link to the original submission: https://news.ycombinator.com/item?id=17010199
Which includes a blog post that goes into this without being just a presentation-aid PDF: http://cliffc.org/blog/2017/07/30/introverts-emotional-processing-self-esteem-and-salary-negotiations/
I know I'm late to the party, but as an FYI, it seems as if this presentation is adapted from this:
http://www.cliffc.org/blog/2017/07/30/introverts-emotional-processing-self-esteem-and-salary-negotiations/
>OP– http://cliffc.org/blog/wp-content/uploads/2018/05/AWarOfWords.pdf
I'm getting a 404 on the current OP URL, but this works:
http://cliffc.org/blog/wp-content/uploads/2018/05/2018_AWarOfWords.pdf