C
Cliff Click
blogs.azulsystems.com · Personal blog · on HN since 2007
Cliff Click, a Java virtual machine engineer at Azul Systems, writes about concurrency, JIT compilers, and non-blocking data structures.
What HN saysHN links it for his non-blocking hash table, his views on STM versus locks, and Java performance, and a commenter links his talk with David Moon.
18HN people shared it
10linked it in comments
12stories submitted
179story points
17 years agolast shared
2007people per year2026
Most-shared posts
- 1A Non-Blocking HashTable4 people · 3 points · first shared 2007 · 1 comments on HN
- 2Java vs C performance, from Cliff Click of Azul3 people · 47 points · first shared 2009 · 43 comments on HN
- 3Clojure from Azul perspective: STMs vs Locks3 people · 3 points · first shared 2008 · discussion on HN
- 4An Interview with David Moon and Daniel Weinreb2 people · 20 points · first shared 2009 · 3 comments on HN
- 5Cliff2 people · first shared 2008
- 6Cliff Click checking in1 people · 32 points · first shared 2009 · 3 comments on HN
- 7We don't know how to program...1 people · 26 points · first shared 2008 · 4 comments on HN
- 8Inline Caches and Call Site Optimization1 people · 25 points · first shared 2010 · discussion on HN
- 9Cliff Click Jr: Experiences with Hardware Transactional Memory for Java1 people · 10 points · first shared 2009 · 3 comments on HN
- 10Biased Locking in the JVM1 people · 6 points · first shared 2010 · discussion on HN
- 11Just What-the-Heck is a "wait-free" algorithm?1 people · 5 points · first shared 2008 · discussion on HN
- 12Misc Q&A about JVM implementation from Click Click1 people · 2 points · first shared 2010 · discussion on HN
- 13Nonblocking has1 people · first shared 2009
- 14Jvm language su1 people · first shared 2010
What HN people wrote when they linked it
bayareaguy · 2009-01-02
For the impatient, here's a pastebin with the actual code:
http://java.pastebin.ca/1298391
A followup article to this one includes a link to his sourceforge project:
http://blogs.azulsystems.com/cliff/2007/04/nonblocking_has.html
gtani · 2010-04-13
OK, let me try to be more helpful. Here's good backgrounders
http://www.tbray.org/ongoing/What/Technology/Concurrency/
http://www.sauria.com/blog/2009/10/05/the-cambrian-period-of-concurren…
http://groups.google.com/group/clojure/browse_thread/thread/5c7a962cc7…
http://blogs.azulsystems.com/cliff/2008/09/jvm-language-su.html
http://wiki.jvmlangsummit.com/pdf/36_Click_fastbcs.pdf
---------------------
also recommended: Herlihy/Shavit book, blogs by Sutter and Duffy,
http://www.amazon.com/Art-Multiprocessor-Programming-Maurice-Herlihy/d…
http://herbsutter.com/
http://www.bluebytesoftware.com/blog/Default.aspx
runT1ME · 2010-04-02
Interesting, I haven't gotten to hear the thoughts of too many other telecom engineers when it comes to next generation languages and threading. I'm pretty convinced it has to be one of the hardest problems to get right.
Speaking of STM and locks, have you seen this epic debate?
http://blogs.azulsystems.com/cliff/2008/05/clojure-stms-vs.html
The problem with telecom software (that I'm dealing with now, in my very humble opinion), and the reason it hurts my head, is because you're essentially dealing with a distributed system, each leg being a node
(since each action a leg takes needs to go out over the wire). Not only do you need to see consistent 'state', you also need to make sure your actions are handled correctly as well.
jbellis · 2010-01-02
"Sometimes no-warmup is important (see comments above about pacemakers), but more often a short warmup period is irrelevant to the overall application. If I'm using an IDE, I expect a largish loading period... but then I'm using the IDE all day. I don't use an IDE for 0.1 sec. If warmup is NOT important to the application, then allow the JVM a warmup period before comparing performance numbers. Many of the benchmarks in the language shootout at http://shootout.alioth.debian.org fall into this camp: too short to measure something interesting. Nearly all complete in 1 minute or less." http://blogs.azulsystems.com/cliff/2009/09/java-vs-c-performance-again…
lucifer · 2009-10-30
Then this discussion between Cliff Click and Rich Hickey may be of interest: http://blogs.azulsystems.com/cliff/2008/05/clojure-stms-vs.html
Its a bit dated ('08), but sounds like the jury is still out on STMs.
framiere · 2009-04-03
That is untrue.
Check http://blogs.azulsystems.com/cliff/ for really impressive work on jvm that works on 800+ cores ... oh yes, and you have constant time garbage collection.
johnm · 2008-06-27
In terms of cache friendly and massively scalable, check out Cliff's work on non-blocking hashtables: http://blogs.azulsystems.com/cliff/2007/03/a_nonblocking_h.html
strlen · 2009-12-18
The criticism of Java language is very much to the point (re: verbosity, inheritance). There's some confusion where he calls anonymous classes implementing interfaces "abstract classes with virtual methods"; that's not to say that it's not an awkward approach to closures and function pointers. There's also criticism of synchronized and the Thread class, but there's no mention of the strong points (Doug Lea's java.util.concurrent).
However, the criticism of JVM seems like it's written in 1999 about the Blackdown JVM (Josh Bloch in his interview in Coders At Work attributes much distrust of Java earlier on at Google to experience with this platform). Hot-spot can, many times, be within 10-15% of C's performance. In many cases code running on the JVM will outperform C++'s runtime (and particularly boost).
That's not to say there aren't issues: garbage collection pauses, the stack based nature -- rightly -- is pointed out as an impediment, but it's odd that LLVM isn't mention. However, excluding JVM due to performance (especially when used with modern languages, e.g. Scala, Clojure, Ruby, Javascript) seems short-sighted. See Cliff Click's post on JVM performance:
http://blogs.azulsystems.com/cliff/2009/09/java-vs-c-performance-again…
Repeat after me: HotSpot is not Blackdown, 1.5+ is not 1.2 (you have non-blocking I/O -- even though NIO is still painful to use, you have autoboxing, you have foreach, you have -- for all their limitations -- generics, you have…
ntoshev · 2008-01-16
http://anarchaia.org/
http://blogs.azulsystems.com/cliff/ (JVM hacking, concurrency, non-blocking hashtable)
http://osteele.com/ (javascript, functional programming)
http://glinden.blogspot.com/ (personalization, collective intelligence)
http://paulbuchheit.blogspot.com/
http://steve-yegge.blogspot.com/