Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > JNI & 64-bit windows = slow?

Reply
Thread Tools

JNI & 64-bit windows = slow?

 
 
Christopher Yeung
Guest
Posts: n/a
 
      11-24-2007
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
 
Reply With Quote
 
 
 
 
Christopher Yeung
Guest
Posts: n/a
 
      11-24-2007
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??


Christopher Yeung wrote:
> 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

 
Reply With Quote
 
 
 
 
Roedy Green
Guest
Posts: n/a
 
      11-25-2007
On Sat, 24 Nov 2007 22:55:34 GMT, Christopher Yeung
<(E-Mail Removed)> wrote, quoted or indirectly quoted someone
who said :

>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.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      11-25-2007
On Sun, 25 Nov 2007 03:43:11 GMT, Roedy Green
<(E-Mail Removed)> wrote, quoted or indirectly quoted
someone who said :

>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.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
JNI thread vs. native thread vs. JNI call bgabrhelik Java 0 09-29-2009 03:33 PM
Re: JNI: Error loading DLL from JNI DDL vasanth Java 0 01-25-2005 11:03 AM
Re: JNI: Error loading DLL from JNI DDL vasanth Java 0 01-25-2005 11:01 AM
Porting JNI Windows under JNI LINUX + Wine ? Pasturel Jean-Louis Java 5 03-03-2004 07:50 PM
IBM's JNI fails where Sun's JNI works Alex Hunsley Java 4 11-04-2003 10:34 AM



Advertisments