Hello all

Apache SIS 1.4 contains a Cloud Optimized GeoTIFF reader, and a GeoTIFF writer is currently available in 1.5-SNAPSHOT (not yet fully completed). Those reader/writer are in pure Java (ignoring native code provided by the JDK itself). There is a widespread belief that a Java code would surely be slower than C/C++ code. To verify, we conducted a superficial benchmark. It is very superficial in that we tested only one image with one compression method, no sub-region, no subsampling, no parallelization, no reprojection, etc. But the results nevertheless question the above-cited belief. In that benchmark, Apache SIS and GDAL performances were equivalent. The numbers actually report Apache SIS as very slightly faster than GDAL, but we cannot conclude much because of all above-cited limitations, because there is a possibility of biais in time measurements (we tried to compensate it), because the differences are close to margin errors, and because Apache SIS spent 95% of its time in the native code of the `java.util.zip` package. Assuming that GDAL also uses the `zlib` library (we did not tested with `libdeflate`), 95% of this benchmark is actually measuring the same code. However for the remaining 5%, it suggests that the interfacing between Java and the native code in `java.nio` and `java.util.zip` packages can be as efficient as the interfacing between a C/C++ application and native libraries.

More details are there: https://www.geomatys.com/2023/10/05/geotiff-reader-writer-performance-comparison/

    Martin


Reply via email to