TaffyDB vs. LinqJs

Benchmark created by Andreas on


Description

TaffyDB as well as LinqJs offer some added functionalities for javascript-arrays. Here is the performance-comparison!

Preparation HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.min.js"></script>
<script src="http://f0e43e0449ff85b5a83a-8d88610b03123726d01e576fafeaf9d4.r60.cf2.rackcdn.com/taffy-min.js"></script>

Setup

var entries = 1000;
    var range = 100;
    var taffyData = TAFFY([]);
    for (var i = 0; i < entries; i++) {
      taffyData.insert({
        id: i,
        value: i + ""
      });
    }
    var linqArray = [];
    for (var i = 0; i < entries; i++) {
      linqArray.push({
        id: i,
        value: i + ""
      });
    }
    var linqData = Enumerable.From(linqArray);

Test runner

Ready to run.

Testing in
TestOps/sec
TaffyDB add records
var data = TAFFY([]);
for (var i = 0; i < entries; i++) {
  data.insert({
    id: i,
    value: i + ""
  });
}
ready
LinqJS add records
var data = [];
for (var i = 0; i < entries; i++) {
  data.push({
    id: i,
    value: i + ""
  });
}
ready
TaffyDB find by id
for (var i = 0; i < entries; i++) {
  taffyData({
    id: i
  });
}
ready
Linq find by id
for (var i = 0; i < entries; i++) {
  linqData.Single(function(v) {
    return v.id == i;
  });
}
ready
TaffyDB get range
for (var i = 0; i < entries; i++) {
  taffyData({
    id: {
      lt: i + range
    }
  }, {
    id: {
      gt: i
    }
  });
}
ready
Linq get range
for (var i = 0; i < entries; i++) {
  linqData.Where(function(v) {
    return v.id > i && v.id < (i + 100);
  }).ToArray();
}
ready

Revisions

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