public static void main(String[] args) {
    double gb = args.length < 1 ? 1 : Double.parseDouble(args[0]);
    long number = (long) (gb * 1_000_000_000 / ITEM_SIZE_BYTES);
    Path path = Path.of("./featuretest");
    FileUtils.delete(path);
    FileUtils.deleteOnExit(path);
    var config = PlanetilerConfig.defaults();
    try {
      List<Results> results = new ArrayList<>();
      for (int chunks : List.of(100, 200, 500)) {
        for (int readThreads : List.of(1, 2, 3, 4)) {
          for (boolean mmap : List.of(false, true)) {
            results.add(run(path, 1, readThreads, number, chunks, mmap, true, true, config));
          }
        }
      }
      for (var result : results) {
        System.err.println(result.chunks + "\t" + result.readThreads + "\t" + result.mmap + "\t" + result.read);
      }
    } finally {
      FileUtils.delete(path);
    }
  }
Performance tests for {@link ExternalMergeSort}. Times how long it takes to write temp features, sort, then read them
back with different parameters.
<p>
Usage: {@code BenchmarkExternalMergeSort &lt;number of GB of features to write&gt;}
planetiler-benchmarks/src/main/java/com/onthegomap/planetiler/collection/BenchmarkExternalMergeSort.java