[vox-tech] benchmarking (again)
Peter Jay Salzman
p at dirac.org
Fri Feb 17 13:16:29 PST 2006
On Fri 17 Feb 06, 12:00 PM, Mark K. Kim <lugod at cbreak.org> said:
> On Fri, Feb 17, 2006 at 11:13:42AM -0500, Peter Jay Salzman wrote:
>
> > And I've read that java allocates
> > memory for all data items on the heap, which is never stored in L1 cache
> > while for C and C++, temporary objects are often put into the L1 cache.
>
> I think you mean CPU registers? L1/L2/L3 caches are just buffers
> between RAM and the CPU registers, and all data allocated in RAM, stack
> or heap, go through L1 cache at some point. Programming languages or
> compilers have no direct memory allocation access of the caches.
I was under the impression that this is what computer scientists call
"locality of data" -- if data is used once, it'll be used again soon. The
strategy that attempts to exploit locality of data is to hold recent data in
L1 cache.
I read that in an article on Java World on optimizing Java programs.
> Anyway, wouldn't the details of data items getting allocated in the
> heap/stack/register depend on the JVM and the JIT compiler? Objects,
> would have to be allocated in the heap, but simple data types like
> "double" can certainly be temporarily allocated in a CPU register until
> it's out of scope, no matter what the Java standard may say, if the JIT
> compiler, for example, determines it can be done safely and can speed up
> the execution.
I see what you mean. Yeah, but the question still remains -- what's going
on with the user time in java apps, and why does the program run faster in
Java than C++? Certainly C++ compilers know how to do all that stuff too.
Pete
More information about the vox-tech
mailing list