自身をYuichirouと名乗る謎の男が文字通り「つれずれなるままに」書くよくわからん日記。
検索サイトから来た方、こんなページでゴメンナサイ。下にあるフォームに検索ワードを入れて検索すると、情報が得られるかも。
なお、タイトルに打ち間違いはありません。
1000 | 01 | 02 | 03 | 04 |
1504 | 01 | 02 | 03 |
2003 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 |
1504 | 01 | 02 | 03 |
2003 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 |
2008年11月27日
■Re: はてなブックマークのコンテンツの JavaScript を高速化する

Reply to はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記
「重い箇所2:HatenaStar.js 1738 行目」で取り上げられていた Hatena.Star.Button.reateButton ですが、Flyweight パターンのアイデアと Element.cloneNode() を利用したところ、手元の環境(WinXP,Fx3.0)で7.7倍速くなったのでお伝えしておきます。
修正コード
/* Hatena.Star.Button */ Hatena.Star.Button = new Ten.Class({ createdButton: {}, createButton: function(args) { var src = args["src"]; if (!this.createdButton[src]) { var newimg = document.createElement('img'); with (newimg.style) { cursor = 'pointer'; margin = '0 3px'; padding = '0'; border = 'none'; verticalAlign = 'middle'; } newimg.src = src; this.createdButton[src] = newimg; } var img = this.createdButton[src].cloneNode(false); for (var attr in args) { if (attr == "src") continue; img.setAttribute(attr, args[attr]); } return img; },
| 試行1 | 2 | 3 | 4 | 5 | 平均 | |
|---|---|---|---|---|---|---|
| Before | 278.774 | 293.522 | 275.969 | 290.839 | 295.314 | 286.884(ms) |
| After | 38.658 | 36.498 | 35.434 | 37.827 | 38.205 | 37.324(ms) |
トラックバック - http://d.hatena.ne.jp/Yuichirou/20081127



細かいインスタンスを共有して使っているわけではなく
cloneしてカスタマイズしているので、どちらかというと Prototypeパターン かと。
imageの画像実体を共有する点が 「Flyweightパターンのアイデア」、
後半部分がPrototypeパターンぽいという感じですね。
8倍近く高速化されるという事は、
ブラウザ側の同一URLイメージの管理が効率的ではないという事でしょうか。
おそろしいことだ。。。
> ブラウザ側の同一URLイメージの管理が効率的ではないという事でしょうか。
どうもFirefoxはその辺アレゲのようです。私はまだ深く調べていないのですが……