A
arne thormodsen
Just to be clear, I'm afraid that I can't do more than sketch my problem out
here, since it's customer-specific, but I'm hoping for some direction.
I'm testing two implementations of a data-processing API, one in pure Java,
one in native methods (windows dll). The process I am testing is disk I/O
intensive.
Running the same performance test over and over again I've found that the
pure Java implementation gives very consistent results, while the native
method version gives results that steadily get better over about a dozen
runs, finally ending up about the same at the pure Java implementation
(probably ultimately limited by disk thruput).
For example, test 1 might look like:
pure Java method : 12 sec
native method: 20 sec
test 5 like:
pure Java method: 11 sec
native method: 15 sec
test 10 like:
pure Java method: 12 sec
native method: 10 sec
What could be going on here? It sure feels like something is being cached,
but I'm not sure what.
Thanks,
--arne
here, since it's customer-specific, but I'm hoping for some direction.
I'm testing two implementations of a data-processing API, one in pure Java,
one in native methods (windows dll). The process I am testing is disk I/O
intensive.
Running the same performance test over and over again I've found that the
pure Java implementation gives very consistent results, while the native
method version gives results that steadily get better over about a dozen
runs, finally ending up about the same at the pure Java implementation
(probably ultimately limited by disk thruput).
For example, test 1 might look like:
pure Java method : 12 sec
native method: 20 sec
test 5 like:
pure Java method: 11 sec
native method: 15 sec
test 10 like:
pure Java method: 12 sec
native method: 10 sec
What could be going on here? It sure feels like something is being cached,
but I'm not sure what.
Thanks,
--arne