private static Duration testUpdates(int size, IntFunction<LongMinHeap> heapFn) {
    int[] indexes = new int[size];
    long[][] vals = getVals(size);
    var heap = heapFn.apply(size);
    for (int i = 0; i < size; i++) {
      heap.push(i, vals[i][indexes[i]++]);
    }
    var start = System.nanoTime();
    while (!heap.isEmpty()) {
      int id = heap.peekId();
      int index = indexes[id]++;
      long[] valList = vals[id];
      if (index < valList.length) {
        heap.updateHead(valList[index]);
      } else {
        heap.poll();
      }
    }
    return Duration.ofNanos(System.nanoTime() - start);
  }
Performance tests for {@link LongMinHeap} implementations.

Times how long it takes to merge N sorted lists of random elements.
planetiler-benchmarks/src/main/java/com/onthegomap/planetiler/collection/BenchmarkKWayMerge.java