Awesome benchmarking Martin. Would you like to write an ASF blog post about this, CC’ing Sally…
On 9/21/17, 4:13 AM, "Martin Desruisseaux" <[email protected]> wrote: A comparison of Apache SIS and Proj.4 has been posted in two blob posts: one on performance aspects [1] and one on accuracy aspects [2]. We have not been able to perform an extensive comparison yet, but more tests may happen in 2018. In the meantime, below is a summary of some points: * Proj.4 is generally faster than Apache SIS on Java 8, apparently because trigonometric functions are slower in Java 8. * Some (but not all) trigonometric functions are much faster in Java 9, but we have not yet benchmarked SIS on Java 9. * Despite above handicap, Apache SIS is sometime faster than Proj.4 (400 times faster in an extreme case). This can be explained by more extensive use of mathematical equivalences and runtime detection of simplifications in Apache SIS. * Apache SIS and Proj.4 are in close agreement for all tested coordinate conversions (this category include map projections) on Earth. * Apache SIS and Proj.4 are sometime in disagreement by 1 or 2 meters for coordinate transformations (this category include datum shifts). o In the two cases were a disagreement is observed, Apache SIS is conform to the parameters specified by the EPSG geodetic dataset. o In one case, Proj.4 results are wrong by 0.9 ± 0.4 meter. This is not a bug that could be easily fixed, but a Proj.4 architectural issue ("early-binding" versus "late-binding" approaches). More details are given in the blog post. o In the other case, one can argue that Proj.4 is not wrong provided that the difference between Apache SIS and Proj.4 results are smaller than the stochastic errors associated to the tested transformations. Apache SIS provides this information, but not Proj.4. This lack of information makes difficult to determine if the difference is acceptable or not. * For Cylindrical Equal Area ("cea") projection on Jupiter (tested because it is a more flattened planet than Earth): o If Jupiter had the size of Earth (for easier distance comparison), average Proj.4 error would be 90 meters. o Apache SIS does not have this error; it keeps centimetric precision. Those errors are not significant to everyone. But we need a way to tell user if the library is delivering the accuracy that (s)he need, or if (s)he got the operation for the right geographic area. Apache SIS provides this information, notably through ISO 19162 (WKT 2) formatting. This support is not yet widespread in other open source libraries. Martin [1] https://www.geomatys.com/wordpress/index.php/2017/08/28/english-proj-4-versus-apache-sis-a-performance-comparison/?lang=en [2] https://www.geomatys.com/wordpress/index.php/2017/09/20/proj-4-versus-apache-sis-an-accuracy-comparison/?lang=en
