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.

Reply via email to