なんですぐ死んでしまうん.
以下の 2 つをご覧ください.
前者 (A) は毎回同じオブジェクトを親にして Object.create()
でオブジェクトを作成,
後者 (B) は違うオブジェクトを親にしています.
console.time("A"); var parent = {}; var dummy; for (var i = 0; i < 100000; i++) { dummy = {}; dummy = Object.create(parent); } console.timeEnd("A");
console.time("B"); var parent = {}; var dummy; for (var i = 0; i < 100000; i++) { parent = {}; dummy = Object.create(parent); } console.timeEnd("B");
てきとーに試しただけですが, Node.js v5.2.0 では B (違うオブジェクトを親) の方が A より 7.6 倍くらい遅くなりました. v0.12.7 とかでも同様に B の方が遅くなります.
Chrome 47.0.2526.80, Firefox 42.0, Safari 9.0.1 でも試しましたが, まず, Firefox と Safari は共に B の方が 2 〜 3 倍程度遅くなります. おそらく A はキャッシュされるとかそういうのがあるのでしょう. 一方 Chrome はなぜか A, B はほぼ同じで, ただし A は Node.js の場合の 30 倍, B も同様に 4 倍くらい遅くなっていました. もうよくわかりません.