new principle of division between structures and classes

Benji Smith dlanguage at benjismith.net
Mon Jan 12 20:31:48 PST 2009


Andrei Alexandrescu wrote:
> Weed wrote:
>> Weed пишет:
>>
>>>>> 4. Java and C# also uses objects by reference? But both these of
>>>>> language are interpreted. I assume that the interpreter generally with
>>>>> identical speed allocates memory in a heap and in a stack, therefore
>>>>> authors of these languages and used reference model.
>>>>>
>>>> Neither of these languages are interpreted, they both are compiled into
>>>> native code at runtime.
>>> Oh!:) but I suspect such classes scheme somehow correspond with
>>> JIT-compilation.
>>>
>>
>> I guess allocation in Java occurs fast because of usage of the its own
>> memory manager.
>>     
>> I do not know how it is fair, but:
>> http://www.ibm.com/developerworks/java/library/j-jtp09275.html
>>
>> "Pop quiz: Which language boasts faster raw allocation performance, the
>> Java language, or C/C++? The answer may surprise you -- allocation in
>> modern JVMs is far faster than the best performing malloc
>> implementations. The common code path for new Object() in HotSpot 1.4.2
>> and later is approximately 10 machine instructions (data provided by
>> Sun; see Resources), whereas the best performing malloc implementations
>> in C require on average between 60 and 100 instructions per call
>> (Detlefs, et. al.; see Resources)."
> 
> Meh, that should be taken with a grain of salt. An allocator that only 
> bumps a pointer will simply eat more memory and be less cache-friendly. 
> Many applications aren't that thrilled with the costs of such a model.
> 
> Andrei

Actually, memory allocated in the JVM is very cache-friendly, since two 
subsequent allocations will always be adjacent to one another in 
physical memory. And, since the JVM uses a moving GC, long-lived objects 
move closer and closer together.

Of course, Java programmers tend to be less careful about memory 
allocation, so they usually consume **way** too much memory and lose the 
benefits of the moving GC.

Java-the-langauge and Java-the-platform are very efficient, even if the 
java frameworks and java patterns tend to bloated and nasty.

--benji



More information about the Digitalmars-d mailing list