javascript graph (v2)

Revision 2 of this benchmark created on


Description

javascript-graph poc

Setup

var DUMMY = {};
    var NODE_COUNT_LARGE = 1000000;
    function pointerTranverse(nodes, iterations) {
      var target = nodes[iterations];
      for (var i = 1; i < iterations; i++) {
        target = target["next"]; //case of random nulled   
      }
      return target;
    }
    
    function indexTranverse(nodes, iterations) {
      var target = nodes[iterations];
      for (var i = 1; i < iterations; i++) {
        target = nodes[target["next"]];
      }
      return target;
    }
    
    
    var createNodes = function(size, getNext) {
    
      var nodes = [];
    
      for (var i = 1; i <= size; i++) {
        nodes[i] = {
          "id": i
        };
      }
    
      for (var i = 1; i <= size; i++) {
        nodes[i]["next"] = getNext(i,nodes);
      }
      return nodes;
    };
    
    
    var NODE_COUNT_LARGE = 1000000;
    var random = [];
    for (var i = 0; i <= NODE_COUNT_LARGE; i++) {
      random[i] = Math.floor(Math.random() * NODE_COUNT_LARGE + 1);
    }
    
    var large_random_nodes = [];
    
    large_random_nodes = createNodes(NODE_COUNT_LARGE, function(i,nodes) {
      return nodes[random[i]]
    });
    
    
    large_ordered_nodes = createNodes(NODE_COUNT_LARGE, function(i,nodes) {
      return nodes[i-1]
    });
    
    
    var large_random_nodes_offset = createNodes(NODE_COUNT_LARGE, function(i) {
      return random[i]
    });
    
    var large_ordered_nodes_offset = createNodes(NODE_COUNT_LARGE, function(i) {
      return i - 1;
    });

Test runner

Ready to run.

Testing in
TestOps/sec
traverse random connected node by index
indexTranverse(large_random_nodes_offset,NODE_COUNT_LARGE);
ready
traverse random connected node by pointer
pointerTranverse(large_random_nodes, NODE_COUNT_LARGE);
ready
traverse ordered node by index
indexTranverse(large_ordered_nodes_offset,NODE_COUNT_LARGE);
ready
traverse ordered node by reference
pointerTranverse(large_ordered_nodes, NODE_COUNT_LARGE);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.