graph-construction.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. var createGraph = require('../');
  2. var randomAPI = require('ngraph.random').random
  3. var Benchmark = require('benchmark');
  4. var suite = new Benchmark.Suite;
  5. suite.add('Adding 5,000 edges', function() {
  6. var graph = createGraph();
  7. for(var i = 1; i < 5000; ++i) {
  8. graph.addLink(i, i - 1, i);
  9. }
  10. });
  11. suite.add('Adding 5,000 multigraph edges', function() {
  12. var graph = createGraph({multigraph: true});
  13. for(var i = 1; i < 5000; ++i) {
  14. graph.addLink(i, i - 1, i);
  15. }
  16. });
  17. suite.add('Adding 5,000 random edges', function() {
  18. var graph = createGraph();
  19. var random = randomAPI(42);
  20. var maxEdgeId = 10000000;
  21. for(var i = 1; i < 5000; ++i) {
  22. var fromId = random.next(maxEdgeId);
  23. var toId = random.next(maxEdgeId);
  24. graph.addLink(fromId, toId, i);
  25. }
  26. });
  27. suite.add('Adding 5,000 random edges to multigraph', function() {
  28. var graph = createGraph({multigraph: true});
  29. var random = randomAPI(42);
  30. var maxEdgeId = 10000000;
  31. for(var i = 1; i < 5000; ++i) {
  32. var fromId = random.next(maxEdgeId);
  33. var toId = random.next(maxEdgeId);
  34. graph.addLink(fromId, toId, i);
  35. }
  36. })
  37. suite.add('Adding 5,000 random edges and randomly removing them', function() {
  38. var graph = createGraph();
  39. var random = randomAPI(42);
  40. var maxEdgeId = 10000000;
  41. for(var i = 1; i < 5000; ++i) {
  42. var fromId = random.next(maxEdgeId);
  43. var toId = random.next(maxEdgeId);
  44. graph.addLink(fromId, toId, i);
  45. }
  46. for(var i = 1; i < 15000; ++i) {
  47. var fromId = random.next(maxEdgeId);
  48. var toId = random.next(maxEdgeId);
  49. graph.removeLink(fromId, toId);
  50. }
  51. });
  52. suite.add('Adding 5,000 random edges to multigraph and randomly removing them', function() {
  53. var graph = createGraph({multigraph: true});
  54. var random = randomAPI(42);
  55. var maxEdgeId = 10000000;
  56. for(var i = 1; i < 15000; ++i) {
  57. var fromId = random.next(maxEdgeId);
  58. var toId = random.next(maxEdgeId);
  59. graph.addLink(fromId, toId, i);
  60. }
  61. for(var i = 1; i < 5000; ++i) {
  62. var fromId = random.next(maxEdgeId);
  63. var toId = random.next(maxEdgeId);
  64. graph.removeLink(fromId, toId);
  65. }
  66. })
  67. suite.add('Removing all edges one by one from 5k graph', function() {
  68. var graph = createGraph();
  69. var random = randomAPI(42);
  70. var maxEdgeId = 10000000;
  71. for(var i = 1; i < 5000; ++i) {
  72. var fromId = random.next(maxEdgeId);
  73. var toId = random.next(maxEdgeId);
  74. graph.addLink(fromId, toId, i);
  75. }
  76. var links = [];
  77. graph.forEachLink(function (link) {
  78. links.push(link);
  79. });
  80. for (var i = 0; i < links.length; ++i) {
  81. graph.removeLink(links[i]);
  82. }
  83. })
  84. suite.add('Removing all edges one by one from 5k multigraph graph', function() {
  85. var graph = createGraph({multigraph: true});
  86. var random = randomAPI(42);
  87. var maxEdgeId = 10000000;
  88. for(var i = 1; i < 5000; ++i) {
  89. var fromId = random.next(maxEdgeId);
  90. var toId = random.next(maxEdgeId);
  91. graph.addLink(fromId, toId, i);
  92. }
  93. var links = [];
  94. graph.forEachLink(function (link) {
  95. links.push(link);
  96. });
  97. for (var i = 0; i < links.length; ++i) {
  98. graph.removeLink(links[i]);
  99. }
  100. })
  101. suite.on('cycle', function(event) {
  102. console.log(String(event.target));
  103. })
  104. // run async
  105. .run({ 'async': true });