Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++/Java Performance for Neural Networks?

I was discussing neural networks (NN) with a friend over lunch the other day and he claimed the the performance of a NN written in Java would be similar to one written in C++. I know that with 'just in time' compiler techniques Java can do very well, but somehow I just don't buy it. Does anyone have any experience that would shed light on this issue? This page is the extent of my reading on the subject.

like image 896
user7545 Avatar asked Sep 15 '08 16:09

user7545


3 Answers

The Hotspot JIT can now produce code faster than C++. The reason is run-time empirical optimization.

For example, it can see that a certain loop takes the "false" branch 99% of the time and reorder the machine code instructions accordingly.

There's lots of articles about this. If you want all the details, read Sun's excellent whitepaper. For more informal info, try this one.

like image 104
Jason Cohen Avatar answered Oct 18 '22 09:10

Jason Cohen


I'd be interested in a comparison between Hotspot JIT and profile-guided optimization optimized C++.

The problem I see with the Hotspot JIT (and any runtime-profile-optimized JIT compiler) is that statistics must be kept and code modified. While there are isolated cases this will result in faster-running code, I doubt that profile-optimized JIT compilers will run faster than well optimized C or C++ code in most circumstances. (Of course I could be wrong.)

Anyway, usually you're going to be at the mercy of the larger project, using the same language it is written in. Or you'll be at the mercy of the knowledge base of your co-workers. Or you'll be at the mercy of the platform you are targetting (is a JVM available on the architecture you're targetting?). In the rare case you have complete freedom and you're familiar with both languages, do some comparisons with the tools you have at your disposal. That is really the only way to determine what's best.

like image 2
Kevin Avatar answered Oct 18 '22 11:10

Kevin


The only possible answer is: make a prototype and measure for yourself. If my experience is of any interest, Java and C# were always much slower than C++ for the kind of work I was doing - I believe mostly because of the high memory consumption. Of course, you can come to a completely different conclusion.

like image 2
Nemanja Trifunovic Avatar answered Oct 18 '22 11:10

Nemanja Trifunovic