JNI & 64-bit windows = slow?

C

Christopher Yeung

Help... I don't know why JDK would introduce such an overhead:

I've a Win 64-bit C++ routine that uses dynamic cast/RTTI heavily. I'm
aware of the fact that pure C++ code that uses RTTI/dynamic cast runs
slower in native 64-bit Windows than WOW. But when I put the same
routine inside a 64-bit JVM, the performance degraded by 300%. Can
somebody explain why the difference? AFAIA the JVM shouldn't introduce
so much overhead.

If the C++ routine is compiled as win32 library and run on WOW, the
benchmark is about 1 sec.
If the same C++ routine is compiled as a win64 library and run as native
64-bit, the benchmark is about 1.4 sec.
If the same win64 compiled library is run inside a 64-bit JDK1.5.0_10,
the benchmark is about >4.2sec. <==== 300% performance degradation!!!

All the timings were collected on the same 64-bit Windows 2003 Server box.

Many thanks in advance.

Chris
 
C

Christopher Yeung

More results from testing:

The performance degradation seems to be specific to 64-bit Windows.
There is no statistically significant difference between running the
routine in native C++ or inside a JVM on SPARC machines. In fact there
is no significant difference on 32-bit Windows either.
Just why a 64-bit compiled library uses dynamic casts and running inside
a 64-bit JVM on Windows would incur such an overhead??
 
R

Roedy Green

Help... I don't know why JDK would introduce such an overhead:

I suspect the problem is in 64-bit windows. It may still contain large
hunks of 32-bit code. When your 64-bit C calls OS services there is
an overhead to flip to 32 bit code and back.
 
R

Roedy Green

I suspect the problem is in 64-bit windows. It may still contain large
hunks of 32-bit code. When your 64-bit C calls OS services there is
an overhead to flip to 32 bit code and back.

You can check if I am correct by writing some standalone C code for 32
bit and 64 bit Windows and benchmarking it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,832
Latest member
UtaHetrick

Latest Threads

Top