/
RasterizingReprojectBench.scala
50 lines (39 loc) · 1.39 KB
/
RasterizingReprojectBench.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package geotrellis.raster.reproject
import org.openjdk.jmh.annotations._
import org.openjdk.jmh.infra.BenchmarkParams
import geotrellis.bench.init
import geotrellis.proj4._
import geotrellis.raster._
import geotrellis.raster.resample.NearestNeighbor
import geotrellis.vector._
import scala.util.Random
@BenchmarkMode(Array(Mode.AverageTime))
@State(Scope.Thread)
class RasterizingReprojectBench {
import RasterizingReprojectBench._
@Param(Array("32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"))
var size: Int = _
var raster: ProjectedRaster[Tile] = _
var destRE: ProjectedRasterExtent = _
val transform: Transform = Transform(srcCrs, destCrs)
val inverse: Transform = Transform(destCrs, srcCrs)
@Setup(Level.Trial)
def setup(params: BenchmarkParams): Unit = {
val len = size * size
raster = ProjectedRaster(ArrayTile(init(len)(Random.nextInt), size, size), srcExtent, srcCrs)
destRE = ProjectedRasterExtent(raster.projectedExtent.reproject(destCrs), destCrs, size, size)
}
@Benchmark
def standardReproject: Raster[Tile] = {
raster.raster.reproject(destRE: RasterExtent, transform, inverse)
}
@Benchmark
def rasterizingReproject: ProjectedRaster[Tile] = {
raster.regionReproject(destRE, NearestNeighbor)
}
}
object RasterizingReprojectBench {
val srcCrs = LatLng
val destCrs = ConusAlbers
val srcExtent = Extent(-109, 37, -102, 41)
}