A JVM Does That? (2011) [pdf]
If you are part of the HFT crowd who uses the JVM then you know who the author, Cliff Click, is.<p>His Blogs (former and current) are goldmines for high performance JVM information.<p><a href="http:&#x2F;&#x2F;www.azulsystems.com&#x2F;blog&#x2F;author&#x2F;cliff" rel="nofollow">http:&#x2F;&#x2F;www.azulsystems.com&#x2F;blog&#x2F;author&#x2F;cliff</a><p><a href="http:&#x2F;&#x2F;www.cliffc.org&#x2F;blog&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.cliffc.org&#x2F;blog&#x2F;</a><p>I had one CTO of a public HFT firm tell me that short of FPGA&#x27;s Azul&#x27;s pause-less GC (<a href="https:&#x2F;&#x2F;www.azul.com&#x2F;products&#x2F;zing&#x2F;pgc&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.azul.com&#x2F;products&#x2F;zing&#x2F;pgc&#x2F;</a>) was the biggest performance win they&#x27;d had in the past few years, note: this was a few years ago.<p>EDIT:  someone emailed asking for how HFT firms write their java code.  I haven&#x27;t written java in 3 years so I&#x27;m probably not the best person to author a list but this is what I&#x27;d include:<p>In order of importance:<p>- Measure, measure, measure.  Every HFT firm can tell you to the nanosecond, as much as that&#x27;s possible, what their time is from receiving a packet to when it&#x27;s replied to.  Focus as much, if not more on the 95%, 99% times as the average time.<p>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&#x27;t ship with this kind of bug.<p>- no GC&#x27;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<p>- short call stacks, and no recursion<p>- one physical core per thread<p>- non locking data structures and use the one writer principle where possible<p>- don&#x27;t use the kernel if possible, ie solar flare Ethernet cards that have userland drivers<p>- cache friendly data structures<p>Watch this video:
<a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iINk7x44MmM" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iINk7x44MmM</a>