Alternative Languages on the JVM 3
No good tools for telling why optimizers bailed out, which is an industry-wide problem. So run microbenchmark with hot simple code and GDB it. Debugging flies lie and aren't QA'ed and are just a problem. ROUND 2: Alternative Concurrency Only talking about Clojure STM as only alternative concurrency approach [ Scala actor knock? -ed ] Nothing shared by default, with shared variables guarded by STM. Using the travelling salesmen problem w/worker ants, tried up to 600 ants on 768 Azul. Tried contention microbenchmark: many CPUs bumping a shared counter. Performanced died: total throughput went down to zero over time, and adding more CPUs made things work. No graceful fall-off under pressure. No idea if this is a JDK 6 library failure or a Clojure usage model failure. STM has not been good for 15 years and it's still not good, so hope of a graceful (slow degrade) in livelock would be great, but no great hope. Note that complex locking schemes suffer the same way. A typical DB gets more concurrent requests, and then a peak, and then drops a bit, and then craters. Why doesn't DB queue requests & maintain max throughput? Fall-off Under Load is Bad (FULB). Let's work towards reliable performance under pressure. Queuing requests beyond saturation point would be great. Publishing that would be better. Backpressure reporting at runtime would work, too. Summary: Non-Java languages CAN run as fast on a JVM, but it takes (especially around inlining).