Differential D1855 Diff 6241 java/server/src/main/java/org/softwareheritage/graph/benchmark/Provenance.java
Changeset View
Changeset View
Standalone View
Standalone View
java/server/src/main/java/org/softwareheritage/graph/benchmark/Provenance.java
package org.softwareheritage.graph.benchmark; | package org.softwareheritage.graph.benchmark; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import com.martiansoftware.jsap.JSAPException; | import com.martiansoftware.jsap.JSAPException; | ||||
import org.softwareheritage.graph.Endpoint; | import org.softwareheritage.graph.Endpoint; | ||||
import org.softwareheritage.graph.Graph; | import org.softwareheritage.graph.Graph; | ||||
import org.softwareheritage.graph.benchmark.Common; | import org.softwareheritage.graph.benchmark.Benchmark; | ||||
/** | /** | ||||
* Benchmark Software Heritage <a | * Benchmark Software Heritage <a | ||||
* href="https://docs.softwareheritage.org/devel/swh-graph/use-cases.html#provenance">provenance | * href="https://docs.softwareheritage.org/devel/swh-graph/use-cases.html#provenance">provenance | ||||
* use-cases scenarios</a>. | * use-cases scenarios</a>. | ||||
* | * | ||||
* @author Thibault Allançon | * @author Thibault Allançon | ||||
* @version 0.0.1 | * @version 0.0.1 | ||||
* @since 0.0.1 | * @since 0.0.1 | ||||
*/ | */ | ||||
public class Provenance { | public class Provenance { | ||||
/** | /** | ||||
* Main entrypoint. | * Main entrypoint. | ||||
* | * | ||||
* @param args command line arguments | * @param args command line arguments | ||||
*/ | */ | ||||
public static void main(String[] args) throws IOException, JSAPException { | public static void main(String[] args) throws IOException, JSAPException { | ||||
Common.BenchArgs benchArgs = Common.parseCommandLineArgs(args); | Benchmark bench = new Benchmark(); | ||||
bench.parseCommandLineArgs(args); | |||||
Graph graph = new Graph(benchArgs.graphPath); | Graph graph = new Graph(bench.args.graphPath); | ||||
long[] nodeIds = benchArgs.random.generateNodeIds(graph, benchArgs.nbNodes); | long[] nodeIds = bench.args.random.generateNodeIds(graph, bench.args.nbNodes); | ||||
Endpoint commitProvenanceEndpoint = new Endpoint(graph, "backward", "dir:dir,cnt:dir,dir:rev"); | Endpoint commitProvenanceEndpoint = new Endpoint(graph, "backward", "dir:dir,cnt:dir,dir:rev"); | ||||
Endpoint originProvenanceEndpoint = new Endpoint(graph, "backward", "*"); | Endpoint originProvenanceEndpoint = new Endpoint(graph, "backward", "*"); | ||||
System.out.println("Used " + benchArgs.nbNodes + " random nodes (results are in seconds):"); | System.out.println("Used " + bench.args.nbNodes + " random nodes (results are in seconds):"); | ||||
System.out.println("\n'commit provenance' use-case (using dfs)"); | bench.timeEndpoint( | ||||
Common.timeEndpoint(graph, nodeIds, commitProvenanceEndpoint::walk, "rev", "dfs"); | "commit provenance (dfs)", graph, nodeIds, commitProvenanceEndpoint::walk, "rev", "dfs"); | ||||
System.out.println("\n'commit provenance' use-case (using bfs)"); | bench.timeEndpoint( | ||||
Common.timeEndpoint(graph, nodeIds, commitProvenanceEndpoint::walk, "rev", "bfs"); | "commit provenance (bfs)", graph, nodeIds, commitProvenanceEndpoint::walk, "rev", "bfs"); | ||||
System.out.println("\n'complete commit provenance' use-case"); | bench.timeEndpoint( | ||||
Common.timeEndpoint(graph, nodeIds, commitProvenanceEndpoint::leaves); | "complete commit provenance", graph, nodeIds, commitProvenanceEndpoint::leaves); | ||||
System.out.println("\n'origin provenance' use-case (using dfs)"); | bench.timeEndpoint( | ||||
Common.timeEndpoint(graph, nodeIds, originProvenanceEndpoint::walk, "ori", "dfs"); | "origin provenance (dfs)", graph, nodeIds, originProvenanceEndpoint::walk, "ori", "dfs"); | ||||
System.out.println("\n'origin provenance' use-case (using bfs)"); | bench.timeEndpoint( | ||||
Common.timeEndpoint(graph, nodeIds, originProvenanceEndpoint::walk, "ori", "bfs"); | "origin provenance (bfs)", graph, nodeIds, originProvenanceEndpoint::walk, "ori", "bfs"); | ||||
System.out.println("\n'complete origin provenance' use-case"); | bench.timeEndpoint( | ||||
Common.timeEndpoint(graph, nodeIds, originProvenanceEndpoint::leaves); | "complete origin provenance", graph, nodeIds, originProvenanceEndpoint::leaves); | ||||
} | } | ||||
} | } |