To reproduce the table below you can use the following command:
$ sbt
> project benchmark
> jmh:run -i 10 -wi 5 -f1 -t1 .*DEMRasterSourceBench.*
# VM options: -Xmx4G
# Cores: 4
Dataset | Resolution | delaunay + rasterization, ms/op | |
---|---|---|---|
PDAL (native rasterizer) | red-rocks | 6.9375 | 382.476 ± 44.347 |
PDAL (JVM rasterizer) | red-rocks | 6.9375 | 735.026 ± 10.594 |
GT | red-rocks | 6.9375 | 2319.073 ± 171.407 |
PDAL (native rasterizer) | red-rocks | 3.4687 | 5573.016 ± 493.018 |
PDAL (JVM rasterizer) | red-rocks | 3.4687 | 12579.721 ± 2345.998 |
GT | red-rocks | 3.4687 | 88464.543 ± 10692.569 |
PDAL (native rasterizer) | red-rocks | 1.7344 | 8083.490 ± 1786.544 |
PDAL (JVM rasterizer) | red-rocks | 1.7344 | 16152.638 ± 4003.070 |
GT | red-rocks | 1.7344 | 158994.121 ± 23280.155 |
PDAL (native rasterizer) | red-rocks | 0.8672 | 7697.157 ± 396.745 |
PDAL (JVM rasterizer) | red-rocks | 0.8672 | 16710.832 ± 2661.915 |
GT | red-rocks | 0.8672 | 153764.608 ± 12090.790 |
- PDAL (native rasterizer) - benchmarks a DEMRasterSource that uses PDAL Delaunay and uses native (C++) Rasterizer.
- PDAL (JVM rasterizer) - benchmarks a DEMRasterSource that uses PDAL Delaunay and uses JVM Rasterizer.
- GT - benchmarks a DEMRasterSource that uses GeoTrellis Delaunay and uses JVM Rasterizer.
PDAL Delaunay + Native rasterization makes a lot of sense and it is at it behaves at least two times faster comparing to other methods. It makes no sense to use GeoTrellis Delaunay Triangulation at this point.
Dataset | Resolution | delaunay + rasterization, ms/op | |
---|---|---|---|
PDAL reproject | red-rocks | 6.9375 | 531.069 ± 47.114 |
GT region reproject | red-rocks | 6.9375 | 527.233 ± 15.586 |
- PDAL reproject - benchmarks reprojection done on the PDAL side via filters.reprojection.
- GT region reproject - benchmarks reprojection done using GeoTrellis capabilities.
GeoTrellis reprojection tends to be a slightly faster. The performance is pretty much the same with taking into account the standard deviation. We decided to rely on the GeoTrellis reprojection capabilities at this point.
This benchmark is done against PDAL Java bindings to get the sense of what is slow in the DEMRasterSource.
It does not use the RasterSource
abstraction and uses only PDAL Java API.
To reproduce the table below you can use the following command:
$ sbt
> project benchmark
> jmh:run -i 10 -wi 5 -f1 -t1 .*ReadEPTBench.*
# VM options: -Xmx4G
# Cores: 4
Dataset | Resolution | delaunay + rasterization, ms/op | |
---|---|---|---|
Pipeline execute | red-rocks | 6.9375 | 207.858 ± 18.166 |
Pipeline Delaunay execute | red-rocks | 6.9375 | 388.973 ± 76.595 |
Pipeline Delaunay rasterize | red-rocks | 6.9375 | 419.780 ± 63.084 |
- Pipeline execute - benchmarks raw Pipeline execution without generating a triangulation mesh.
- Pipeline Delaunay execute - benchmarks a Pipeline execution with generating a triangulation mesh.
- Pipeline Delaunay rasterize - benchmarks Pipeline execution with generating a triangulation mesh with the mesh rasterization.