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
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