メンバ変数アクセスの高速化

C++でメンバ変数のアクセスが遅いので、頻繁にアクセスする場合一端ローカル変数に入れてそこにアクセスすることにより高速化するという方法がある。
JavaScriptでもどれぐらい違うかやってみた。

Function.prototype.bench = function(thisObject) {
    var begin = new Date();
    this.apply(thisObject, arguments);
    alert(new Date() - begin);
};

var Test = function() {
    this.length = 100000000;
};

Test.prototype.run = function() {
    for (var i = 0; i < this.length; i++);
};

Test.prototype.run2 = function() {
    for (var i = 0, len = this.length; i < len; i++);
};

var r = new Test();
r.run.bench(r);
r.run2.bench(r);

結果

2806
775

一端ローカル変数に渡したほうが、かなり高速だった。