private void AddEdgesIntoDanfAndUpdateMeasurements(DANF danf, Edge[] edges) {
    long beforeDanf = System.currentTimeMillis();
    danf.addEdges(edges);
    long afterDanf = System.currentTimeMillis();

    totalDanfTime += afterDanf - beforeDanf;
    danfEps = (float) added / totalDanfTime * 1000;

    danfGraphGB = danf.getMemoryUsageGraphBytes() / (float) bytesPerGigaByte;
    danfCounterGB = danf.getMemoryUsageCounterBytes() / (float) bytesPerGigaByte;
    danfVCGB = danf.getMemoryUsageVCBytes() / (float) bytesPerGigaByte;
    danfMSBFSGB = danf.getMemoryUsageMsBfsBytes() / (float) bytesPerGigaByte;
    danfTotalMemory = danfGraphGB + danfCounterGB + danfVCGB + danfMSBFSGB;
  }
  public void benchmark() throws IOException, InterruptedException {

    MutableGraph graph = new ImmutableGraphWrapper(BVGraph.loadMapped(graphFile));
    MutableGraph graph2 = new ImmutableGraphWrapper(BVGraph.loadMapped(graphFile));

    DANF danf = new DANF(h, log2m, graph);
    TrivialDynamicANF tanf = new TrivialDynamicANF(h, log2m, graph2);

    PrintWriter writer = new PrintWriter(dataFile);
    writer.println(
        "%"
            + dateString
            + " "
            + graphName
            + " "
            + maxBulkSize
            + " edges will be inserted into DANF in bulks of "
            + bulkSize
            + ". The time measured is the time to insert "
            + bulkSize
            + " edges.; h is set to "
            + h
            + " and log2m is "
            + log2m
            + ";");
    writer.println(
        "%BulkSize DanfEPS DanfGraphMemory DanfCounterMemory DanfVcMemory DanfMsbfsMemory TrivialEPS TrivialMemory nrArcs nrNodes");

    while (bulkSize <= maxBulkSize) {
      Edge[] edges = generateEdges(graph.numNodes(), bulkSize);

      AddEdgesIntoDanfAndUpdateMeasurements(danf, edges);
      addEdgesIntoTanfAndUpdateMeasurements(tanf, edges);

      writer.println(
          bulkSize
              + " "
              + danfEps
              + " "
              + danfGraphGB
              + " "
              + danfCounterGB
              + " "
              + danfVCGB
              + " "
              + danfMSBFSGB
              + " "
              + trivialEps
              + " "
              + trivialTotalMemory
              + " "
              + added
              + " "
              + graph.numNodes());
      writer.flush();

      System.out.println(
          bulkSize
              + " edges, "
              + danfEps
              + " Danf DPS, "
              + danfTotalMemory
              + "GB DANF memory, "
              + trivialEps
              + " Trivial DPS, "
              + trivialTotalMemory
              + "GB trivial memory, "
              + added
              + " "
              + graph.numNodes());

      added += bulkSize;
      bulkSize += bulkSizeIncrease;
    }

    danf.close();
    writer.close();
  }