&gt; it became necessary to see how our python version compared to the high performance reference implementation in Java.<p>It sounds like the Java version was also optimized - though it&#x27;s hard to say to what degree. I think in general if you&#x27;re doing a lot of numerical computing and matrix operations, the basic java builtins are not going to cut it anyway, and you&#x27;re going to end up using something like ND4j or JBLAS to get comparable performance to something like numpy, in which case I have hard time imagining it could possibly be &#x2F;easier&#x2F; than numpy.<p>Granted, the cython stuff is more &quot;advanced&quot;, and you probably would struggle a bit (or just would not care for the task) if you were a researcher with a surface understanding of what&#x27;s really going on, but it&#x27;s no big deal for a programmer. The other thing is that the defaults usually work well enough that you don&#x27;t really have to pull out the big guns most of the time. You can also decide to do your optimization progressively. &quot;Let me rewrite this part in cython&quot; is a much quicker win than &quot;let me rewrite all of this to run on top of platform X&quot; or something.<p>Also it definitely does depend on the kind of problem. For example, the JVM does have awesome tools for distributed computing and streams like <a href="http:&#x2F;&#x2F;akka.io&#x2F;" rel="nofollow">http:&#x2F;&#x2F;akka.io&#x2F;</a>, vs python is more lacking.<p>In conclusion though, I&#x27;ve been always very pleasantly surprised by how far I can get away with by just dumping larger and larger datasets (current record is in the hundreds of GB for me) into the python &#x2F; pandas &#x2F; scipy &#x2F; numpy stack, and how much of a pleasure it is to use compared to anything else. To toss that away, I&#x27;d want to have tried and failed at a problem with the python stack first.