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