ngraph.graph
Version:
graph data structure
54 lines (47 loc) • 1.45 kB
JavaScript
var createGraph = require('../');
var randomAPI = require('ngraph.random').random;
var Benchmark = require('benchmark');
var suite = new Benchmark.Suite;
var edgeIterationSumWeight = 0;
var edgeIterationMultigraph = 0;
suite.add('Edge iteration', function() {
var graph = createGraph();
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 1000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
edgeIterationSumWeight = 0;
for (var i = 0; i < 100; ++i) {
graph.forEachLink(addUpWeight);
}
function addUpWeight(link) {
edgeIterationSumWeight += link.data;
}
});
suite.add('Edge iteration for multigraph', function() {
var graph = createGraph({multigraph: true});
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 1000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
edgeIterationMultigraph = 0;
for (var i = 0; i < 100; ++i) {
graph.forEachLink(addUpWeight);
}
function addUpWeight(link) {
edgeIterationMultigraph += link.data;
}
});
suite.on('cycle', function(event) {
console.log(String(event.target));
console.log('edge iteration sum weight', edgeIterationSumWeight);
console.log('edge iteration multigraph weight', edgeIterationMultigraph);
})
// run async
.run({ 'async': true });