edge-iteration.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. var createGraph = require('../');
  2. var randomAPI = require('ngraph.random').random
  3. var Benchmark = require('benchmark');
  4. var suite = new Benchmark.Suite;
  5. var edgeIterationSumWeight = 0;
  6. var edgeIterationMultigraph = 0;
  7. suite.add('Edge iteration', function() {
  8. var graph = createGraph();
  9. var random = randomAPI(42);
  10. var maxEdgeId = 10000000;
  11. for(var i = 1; i < 1000; ++i) {
  12. var fromId = random.next(maxEdgeId);
  13. var toId = random.next(maxEdgeId);
  14. graph.addLink(fromId, toId, i);
  15. }
  16. edgeIterationSumWeight = 0;
  17. for (var i = 0; i < 100; ++i) {
  18. graph.forEachLink(addUpWeight);
  19. }
  20. function addUpWeight(link) {
  21. edgeIterationSumWeight += link.data;
  22. }
  23. });
  24. suite.add('Edge iteration for multigraph', function() {
  25. var graph = createGraph({multigraph: true});
  26. var random = randomAPI(42);
  27. var maxEdgeId = 10000000;
  28. for(var i = 1; i < 1000; ++i) {
  29. var fromId = random.next(maxEdgeId);
  30. var toId = random.next(maxEdgeId);
  31. graph.addLink(fromId, toId, i);
  32. }
  33. edgeIterationMultigraph = 0;
  34. for (var i = 0; i < 100; ++i) {
  35. graph.forEachLink(addUpWeight);
  36. }
  37. function addUpWeight(link) {
  38. edgeIterationMultigraph += link.data;
  39. }
  40. });
  41. suite.on('cycle', function(event) {
  42. console.log(String(event.target));
  43. console.log('edge iteration sum weight', edgeIterationSumWeight);
  44. console.log('edge iteration multigraph weight', edgeIterationMultigraph);
  45. })
  46. // run async
  47. .run({ 'async': true });