Javascript prototype operator performance, saves memory, but is it faster? (v5)

Revision 5 of this benchmark created by MikeD on


Description

Performance difference between calling method that was declared into a Javscript object, and calling the same method that was declared outside of the object with protoype keyword

Code from: http://stackoverflow.com/questions/3493252/javascript-prototype-operator-performance-saves-memory-but-is-it-faster/3493725#3493725

Written by: http://stackoverflow.com/users/279608/andrew

Preparation HTML

<script>
  var X, Y, Z, W, V, A, x, y, i, intNow;
  
  function V() {
  };
  
  function V_message(v,s) {
    var mymessage = s + "";
  }
  
  function V_addition(v, i, j) {
    return (i * 2 + j * 2) / 2;
  }
  
  var g_message = V_message;
  var g_addition = V_addition;
  
  function W() {
  };
  
  function W_message(w,s) {
    var mymessage = s + "";
  }
  
  function W_addition(w, i, j) {
    return (i * 2 + j * 2) / 2;
  }
  
  X = function() {};
  X.prototype.message = function(s) {
    var mymessage = s + "";
  }
  X.prototype.addition = function(i, j) {
    return (i * 2 + j * 2) / 2;
  }
  
  Y = function() {
    this.message = function(s) {
      var mymessage = s + "";
    }
    this.addition = function(i, j) {
      return (i * 2 + j * 2) / 2;
    }
  };
  
  function Z() {
    this.message = Z_message;
    this.addition = Z_addition;
  };
  
  function Z_message(s) {
    var mymessage = s + "";
  }
  
  function Z_addition(i, j) {
    return (i * 2 + j * 2) / 2;
  }
  
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Y method is declared into the Javscript object class
y = new Y();
y.message('hi');
y.addition(i, 2);
ready
X method is declared outside class by using protoype keyword
x = new X();
x.message('hi');
x.addition(i, 2);
ready
Z method is declared via variables
z = new Z();
z.message('hi');
z.addition(i, 2);
ready
Global call
w = new W();
W_message(w, 'hi');
W_addition(w, i, 2);
ready
call via Global variable
v = new V();
g_message(v, 'hi');
g_addition(v, i, 2);
ready

Revisions

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