読者です 読者をやめる 読者になる 読者になる

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

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

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

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

javascript

に置いた。

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>