I imagine that implementations of malloc/free exist or could be written that preallocate. Thus this advantage can be achieved in C. -----Original Message----- From: Kevin Wright <[email protected]> Sender: [email protected] Date: Thu, 1 Dec 2011 11:46:34 To: <[email protected]> Reply-To: [email protected] Subject: Re: [The Java Posse] Non biased performance comparison between Java and Objective-C on GNUStep
Actually, one of the main performance benefits Java has is pre-allocating memory. C/C++/etc will often grab their (non-stack) memory on demand via malloc/free, which is what default invocations of new and delete will actually do behind the scenes. Java grabs a big lump up front, "allocation" is then reduced to moving a pointer up and down this pre-allocated heap space. malloc is slow, sometimes very slow, it all depends on your OS, virtual memory, paging, etc, etc. Moving a pointer is very very fast. Other JVM optimisations aside, this one difference alone can make Java programs significantly faster that C/C++/Obj-C equivalents. On 1 December 2011 11:35, Carl Jokl <[email protected]> wrote: > This is not any kind of flame bait thread. > > I am hoping to get some unbiased information on the relative > performance difference between Java and Objective-C. > > More specifically using up to date versions of the Java 6 JRE and > using an up to date GNUStep implementation of Objective-C both running > on Linux. > > I can find quite a few articles with people comparing Java vs C++ but > I suppose Objective-C is more niche and tends not to be used in > comparisons. > > I know that the opinion still prevails in many circles that Java is > slower and/or significantly slower than code written in C/C++. There > have been articles more recently stating that Java was capable of > outperforming C++ these days. > > I am cautious with benchmarks because obviously if someone is trying > to prove a point, that person can be selective about using benchmarks > which support their case. > > I know for example that Java has performance limits doing lots of > heavy floating point operations or trigonometry due to not using > native acceleration where it would cause the values to be less > accurate than required by the specifications (Though I believe this > was being addressed). > > That used case may only apply to applications that use a lot of > floating point calculations. Many business web based or enterprise > applications may do very little floating point number crunching. > > For the sake of context I am in a company that has a system where Java > is used with Servlets to provide a web front end to a system the core > of which is written in Objective-C running on GNUStep. > > Considering the dates in some of the Java source I know the system > must have existed at least as long ago as the year 2000. > Back then the versions of Java would have been a lot slower. Java 6 > included a big performance increase. It would have made sense back > then to argue that the Objective-C code was going to probably perform > better than Java. Now I don't think the difference would be as big. It > would be within my margin of error that Java may outperform Objective- > C due to compile time optimisation that can be done in Java that > cannot be done in Objective-C that is more geared towards dynamic, > runtime behaviour. In that case I would expect C++ to be faster than > Objective-C generally speaking. > > I am hoping to get some feedback from the community to sanitise my > assumptions here. > > I don't want to end up looking like an idiot if Objective-C > significantly outperforms Java. > > The JNI overhead of having Java talk to Objective-C could cancel out > or more than cancel out any performance gains in Objective-C if the > difference is only slight. This depends also whether the cross > communication comprises of many small JNI calls vs few calls that do a > lot of processing before the call returns. > > Any performance information / experience would be helpful. > > -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en. -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
