flow like the river

This commit is contained in:
root 2025-11-07 00:06:12 +01:00
commit 013fe673f3
42435 changed files with 5764238 additions and 0 deletions

View file

@ -0,0 +1,53 @@
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 });

View file

@ -0,0 +1,120 @@
var createGraph = require('../');
var randomAPI = require('ngraph.random').random;
var Benchmark = require('benchmark');
var suite = new Benchmark.Suite;
suite.add('Adding 5,000 edges', function() {
var graph = createGraph();
for(var i = 1; i < 5000; ++i) {
graph.addLink(i, i - 1, i);
}
});
suite.add('Adding 5,000 multigraph edges', function() {
var graph = createGraph({multigraph: true});
for(var i = 1; i < 5000; ++i) {
graph.addLink(i, i - 1, i);
}
});
suite.add('Adding 5,000 random edges', function() {
var graph = createGraph();
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 5000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
});
suite.add('Adding 5,000 random edges to multigraph', function() {
var graph = createGraph({multigraph: true});
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 5000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
});
suite.add('Adding 5,000 random edges and randomly removing them', function() {
var graph = createGraph();
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 5000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
for(var i = 1; i < 15000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.removeLink(fromId, toId);
}
});
suite.add('Adding 5,000 random edges to multigraph and randomly removing them', function() {
var graph = createGraph({multigraph: true});
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 15000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
for(var i = 1; i < 5000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.removeLink(fromId, toId);
}
});
suite.add('Removing all edges one by one from 5k graph', function() {
var graph = createGraph();
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 5000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
var links = [];
graph.forEachLink(function (link) {
links.push(link);
});
for (var i = 0; i < links.length; ++i) {
graph.removeLink(links[i]);
}
});
suite.add('Removing all edges one by one from 5k multigraph graph', function() {
var graph = createGraph({multigraph: true});
var random = randomAPI(42);
var maxEdgeId = 10000000;
for(var i = 1; i < 5000; ++i) {
var fromId = random.next(maxEdgeId);
var toId = random.next(maxEdgeId);
graph.addLink(fromId, toId, i);
}
var links = [];
graph.forEachLink(function (link) {
links.push(link);
});
for (var i = 0; i < links.length; ++i) {
graph.removeLink(links[i]);
}
});
suite.on('cycle', function(event) {
console.log(String(event.target));
})
// run async
.run({ 'async': true });

View file

@ -0,0 +1,31 @@
var Benchmark = require('benchmark');
var createGraph = require('../'),
numberOfNodes = 10000;
var suite = new Benchmark.Suite();
var graph = createGraph();
for (var i = 0; i < numberOfNodes; ++i) {
graph.addNode('hello' + i, i);
}
var sum = 0;
// add tests
suite.add('forEachNode', function() {
var localSum = 0;
graph.forEachNode(function (node) {
localSum += node.data;
});
sum = localSum;
})
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log(sum);
console.log('Fastest is ' + this.filter('fastest').map("name"));
})
// run async
.run({ 'async': true });

20
VISUALIZACION/node_modules/ngraph.graph/perf/snapshot.txt generated vendored Executable file
View file

@ -0,0 +1,20 @@
Node v12.4.0
> node perf/edge-iteration.js
Edge iteration x 626 ops/sec ±1.36% (86 runs sampled)
Edge iteration for multigraph x 568 ops/sec ±0.97% (87 runs sampled)
» node perf/graph-construction.js
Adding 5,000 edges x 580 ops/sec ±1.40% (86 runs sampled)
Adding 5,000 multigraph edges x 432 ops/sec ±1.08% (82 runs sampled)
Adding 5,000 random edges x 219 ops/sec ±0.92% (81 runs sampled)
Adding 5,000 random edges to multigraph x 179 ops/sec ±0.93% (78 runs sampled)
Adding 5,000 random edges and randomly removing them x 7.83 ops/sec ±4.33% (24 runs sampled)
Adding 5,000 random edges to multigraph and randomly removing them x 5.97 ops/sec ±4.07% (20 runs sampled)
Removing all edges one by one from 5k graph x 126 ops/sec ±1.20% (76 runs sampled)
Removing all edges one by one from 5k multigraph graph x 97.78 ops/sec ±4.15% (69 runs sampled)
» node perf/node-iteration.js
graphWithOutMap x 572 ops/sec ±3.64% (71 runs sampled)
graphWithMap x 5,744 ops/sec ±6.48% (69 runs sampled)
Fastest is graphWithMap