Javascript Array Grouping (v4)

Revision 4 of this benchmark created by Andrey Gershun on


Description

different methods for grouping string in an array and getting the max value of the grouping.

Preparation HTML

<script src="http://alasql.org/console/alasql.min.js"></script>
<script>
  var arr = [];
  var day, month, year;
  for(var i = 0; i<6000; i++) {
    day = Math.round(Math.random()*30);
    month = Math.round(Math.random()*12);
    year = Math.round(Math.random()*3 + 2009);
    arr.push(month + "/" + day + "/" + year);
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
nightcracker
var group = {};
var max = 0;
var value;
for (var i = arr.length; --i >= 0;) {
  value = arr[i];
  group[value] = (group[value] || 0) + 1;
}
for (key in group) {
  if (group[key] > max) max = group[key];
}
ready
Mike Samuel
var max = 0;
var group = {};
for (var i = arr.length; --i >= 0;) {
  var value = arr[i];
  var n = group[value] = 1 - -(group[value] | 0);
  if (n > max) {
    max = n;
  }
}
ready
Original
var max = 0;
var group = {};
arr.map(function(value) {
  if (group[value]) {
    group[value]++;
  } else {
    group[value] = 1;
  }
  max = Math.max(max, group[value]);
});
ready
Alasql
var res = alasql('SELECT MAX(cnt) FROM (SELECT COUNT(*) AS cnt FROM [?] GROUP BY [0])', [arr]);
ready
Alasql (without array conversion)
var res = alasql('SELECT MAX(cnt) FROM (SELECT _,COUNT(*) AS cnt FROM ? GROUP BY _)', [arr]);
ready

Revisions

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

  • Revision 1: published by Joey on
  • Revision 3: published by Lostuser23 on
  • Revision 4: published by Andrey Gershun on