メンバ変数アクセスの高速化
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
一端ローカル変数に渡したほうが、かなり高速だった。