String Method vs Function

Benchmark created by Kevin Greer on


Setup

String.prototype.compareTo = function(o) {
      return ( o === this ) ? 0 : this < o ? -1 : 1;
    };
    
    function compareNumbers(a, b) {
     return ( a === b ) ? 0 : a < b ? -1 : 1;
    }
    
    function compareStrings(a, b) {
     return ( a === b ) ? 0 : a < b ? -1 : 1;
    }
    
    function compare(a, b) {
      if ( typeof a === 'number' ) return compareNumbers(a, b);
      if ( typeof a === 'string' ) return compareStrings(a, b);
    }
    
    var strings = [
      'abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz',
      'abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz',
      'abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz',
      'abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz',
      'abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz',
      'abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz'
    ];

Test runner

Ready to run.

Testing in
TestOps/sec
Method
var c = 0;
for ( var i = 0 ; i < strings.length ; i++ )
  for ( var j = 0 ; j < strings.length ; j++ )
    c += strings[i].compareTo(strings[j]);
 
ready
Function
var c = 0;
for ( var i = 0 ; i < strings.length ; i++ )
  for ( var j = 0 ; j < strings.length ; j++ )
    c += compareStrings(strings[i], strings[j]);
 
ready
Generic Function
var c = 0;
for ( var i = 0 ; i < strings.length ; i++ )
  for ( var j = 0 ; j < strings.length ; j++ )
    c += compare(strings[i], strings[j]);
 
ready

Revisions

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

  • Revision 1: published by Kevin Greer on