素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

プロパティアクセスの速度

に置いた。

A: 13
B: 55

のように、メンバが静的な場合には最適化がかかってかなり高速になる(Firefox、Safari、Opera)。jQueryとかはインスタンスを配列風に使っているせいでブラウザの最適化が適用できなくなって損しているんじゃないだろうか。
ここらへんの話は、Hidden ClassとかStructure ChainとかShape Interfaceとかいうのが関係してるような気がする。

    <script type="text/javascript">window.onload = function () {
function A() {
  this["foo"] = Math.random();
}
A.prototype.bar = function () {
  return this;
};

function B() {
  this[Math.random()] = "foo";
}
B.prototype.bar = function () {
  return this;
};

function time(name, fun) {
  var d = new Date().getTime(), t;
  var result = document.getElementById("result");
  for (var i = 0; i < 10000; ++i) {
    fun();
  }
  t = new Date().getTime() - d;
  result.textContent += name + ": " + t + "\n";
}

time("A", function () {
  new A().bar();
});

time("B", function () {
  new B().bar();
});
    };</script>