Sure you can.  The so-called "placement new"[1] allows you exact control
over where you stick your objects.
There are also various implementations available, such as pool[2], from the
Boost libraries

There's a limit to how far you can take this though.  C++ still forces you
to make a lot of it far more explicit, so there's a cognitive overhead to
how far you can take it in an ever-growing system.
It also makes for some real fun and games when debugging & profiling

[1] http://stackoverflow.com/questions/222557/cs-placement-new
[2]
http://www.boost.org/doc/libs/1_48_0/libs/pool/doc/html/boost_pool/pool/introduction.html


On 1 December 2011 11:04, Ricky Clarkson <[email protected]> wrote:

> **
> I imagine that implementations of malloc/free exist or could be written
> that preallocate. Thus this advantage can be achieved in C.
> ------------------------------
> *From: * Kevin Wright <[email protected]>
> *Sender: * [email protected]
> *Date: *Thu, 1 Dec 2011 11:46:34 +0000
> *To: *<[email protected]>
> *ReplyTo: * [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.

Reply via email to