Excelsior JET Benchmarks Jack Andrews' JNI Benchmark
We used the JNI benchmarking program written by Jack Andrews for his article
Interfacing Java with Native Code: Performance Limits:
We need to move large volumes of data from Java to native code.
Our problem is that JNI is a large overhead and we cannot reduce it.
We have tried a number of different ways of moving data from the VM to native code,
and here we present benchmarks for these techniques. In summary,
our techniques were: fine grained (atomic values and primitive arrays are
passed through JNI), coarse grained (data is packaged into an object
array for one JNI call), byte packed (values are encoded into a byte array)
and we even tried passing data over a socket using the byte packing technique.
...
Download and installation instructions for this benchmark may be found at
http://www.str.com.au/jnibench/,
section "Running the Benchmark".
|
| SYSTEM CONFIGURATION |
 |
| CPU: |  | Intel Pentium IV with HyperThreading running at 2.40 GHz |
| RAM: | 512 MB |
| OS: | Windows 2000 Professional |
| Video: | RADEON 9200 SE 64MB at 1024x768x16777216c |
| RESULTS |
 |
The result for each of the benchmarks is the number of data rows transmitted per second.
Longer bar means better performance.
|
JET |
HSC |
HSS |
BEA |
|
JET |
HSC |
HSS |
BEA |
| BytePackedJNIRC |
69099 |
69598 |
86111 |
88542 |
|
99% |
100% |
124% |
127% |
| CoarseGrainedJNIRC |
177411 |
58067 |
75002 |
82919 |
|
306% |
100% |
129% |
143% |
| FineGrainedJNIRC |
136299 |
65233 |
72126 |
89948 |
|
209% |
100% |
111% |
138% |
| JavaRC |
224219 |
237369 |
295801 |
330538 |
|
94% |
100% |
125% |
139% |
| SocketRC |
52062 |
38290 |
58409 |
59109 |
|
136% |
100% |
153% |
154% |
| Average: |
|
|
|
|
|
169% |
100% |
128% |
140% |
|
| SYSTEM CONFIGURATION |
 |
| CPU: |  | AMD Athlon XP running at 1.0 GHz |
| RAM: | 512 MB |
| OS: | Windows 2000 Advanced Server |
| Video: | S3 Virge DX/GX at 1024x768x16777216c |
| RESULTS |
 |
The result for each of the benchmarks is the number of data rows transmitted per second.
Longer bar means better performance.
|
JET |
HSC |
HSS |
BEA |
|
JET |
HSC |
HSS |
BEA |
| BytePackedJNIRC |
84400 |
71800 |
86957 |
88745 |
|
118% |
100% |
121% |
124% |
| CoarseGrainedJNIRC |
166411 |
53824 |
73477 |
70669 |
|
309% |
100% |
137% |
131% |
| FineGrainedJNIRC |
132358 |
65855 |
78201 |
83374 |
|
201% |
100% |
119% |
127% |
| JavaRC |
201722 |
165312 |
194766 |
226131 |
|
122% |
100% |
118% |
137% |
| SocketRC |
18169 |
17106 |
18258 |
20151 |
|
106% |
100% |
107% |
118% |
| Average: |
|
|
|
|
|
171% |
100% |
120% |
127% |
|