Differential D6953 Diff 25202 java/src/main/java/org/softwareheritage/graph/benchmark/utils/Random.java
Changeset View
Changeset View
Standalone View
Standalone View
java/src/main/java/org/softwareheritage/graph/benchmark/utils/Random.java
package org.softwareheritage.graph.benchmark.utils; | package org.softwareheritage.graph.benchmark.utils; | ||||
import org.softwareheritage.graph.Graph; | import org.softwareheritage.graph.SwhBidirectionalGraph; | ||||
import org.softwareheritage.graph.Node; | import org.softwareheritage.graph.Node; | ||||
import java.util.PrimitiveIterator; | import java.util.PrimitiveIterator; | ||||
/** | /** | ||||
* Random related utility class. | * Random related utility class. | ||||
* | * | ||||
* @author The Software Heritage developers | * @author The Software Heritage developers | ||||
Show All 21 Lines | public class Random { | ||||
/** | /** | ||||
* Generates random node ids. | * Generates random node ids. | ||||
* | * | ||||
* @param graph graph used to pick node ids | * @param graph graph used to pick node ids | ||||
* @param nbNodes number of node ids to generate | * @param nbNodes number of node ids to generate | ||||
* @return an array of random node ids | * @return an array of random node ids | ||||
*/ | */ | ||||
public long[] generateNodeIds(Graph graph, int nbNodes) { | public long[] generateNodeIds(SwhBidirectionalGraph graph, int nbNodes) { | ||||
return random.longs(nbNodes, 0, graph.numNodes()).toArray(); | return random.longs(nbNodes, 0, graph.numNodes()).toArray(); | ||||
} | } | ||||
/** | /** | ||||
* Generates random node ids with a specific type. | * Generates random node ids with a specific type. | ||||
* | * | ||||
* @param graph graph used to pick node ids | * @param graph graph used to pick node ids | ||||
* @param nbNodes number of node ids to generate | * @param nbNodes number of node ids to generate | ||||
* @param expectedType specific node type to pick | * @param expectedType specific node type to pick | ||||
* @return an array of random node ids | * @return an array of random node ids | ||||
*/ | */ | ||||
public long[] generateNodeIdsOfType(Graph graph, int nbNodes, Node.Type expectedType) { | public long[] generateNodeIdsOfType(SwhBidirectionalGraph graph, int nbNodes, Node.Type expectedType) { | ||||
PrimitiveIterator.OfLong nodes = random.longs(0, graph.numNodes()).iterator(); | PrimitiveIterator.OfLong nodes = random.longs(0, graph.numNodes()).iterator(); | ||||
long[] nodeIds = new long[nbNodes]; | long[] nodeIds = new long[nbNodes]; | ||||
long nextId; | long nextId; | ||||
for (int i = 0; i < nbNodes; i++) { | for (int i = 0; i < nbNodes; i++) { | ||||
do { | do { | ||||
nextId = nodes.nextLong(); | nextId = nodes.nextLong(); | ||||
} while (graph.getNodeType(nextId) != expectedType); | } while (graph.getNodeType(nextId) != expectedType); | ||||
nodeIds[i] = nextId; | nodeIds[i] = nextId; | ||||
} | } | ||||
return nodeIds; | return nodeIds; | ||||
} | } | ||||
} | } |