Dojo0.4.0によるドラッグアンドドロップ処理のパフォーマンス

本来Dojoのドラッグドロップフレームワークは、他のAjax系ライブラリと比べても重いということはありません。(->Dojo, YUI, script.aculo.usの例)。

なのになぜか私が書くとドラッグ時に2,3秒固まる。CPUがギガヘルツの時代にこの2,3秒という引っかかりは結構ストレスが溜まります。そこでちょっと調査してみました。→Dojo0.4.0によるドラッグドロップのパフォーマンステスト

結論から言うとドロップターゲットの数が効いてきます。10個ほどでだんだん引っかかりを感じ始め、数十個になるとCPUがPentiumM1.8GHzのPCでもストレスに感じます。ドラッグ開始時にすべてのDroppableな場所についてサイズ計算しているためです。

原因の追跡と解決編は後ほど。

うれしさも中くらいなり

1週間〜10日ほどで工事可能とゆーセールストークを信じて既存のCATVによる回線を解約してしまったものの、実際は3週間弱かかって今までネット接続無しで過ごしてみました。意外と禁断症状出ないもんだ。まあ会社近いしな。(え、野良?なにそr)

回線はNTT東(Bフレ)でプロバイダはGyaO光、マンションタイプでVDSL方式というあんまり高速は期待できないパターンだけどとりあえず計測。

 ------ BNRスピードテスト (ダウンロード速度) ------
測定サイト: http://www.musen-lan.com/speed/ Ver3.5001
測定日時: 2006/11/16 09:41:17
回線/ISP/地域: 
                                                                                                  • -
1.NTTPC(WebARENA)1: 34179.251kbps(34.179Mbps) 4272.34kB/sec 2.NTTPC(WebARENA)2: 36389.888kbps(36.389Mbps) 4548.41kB/sec 推定転送速度: 36389.888kbps(36.389Mbps) 4548.41kB/sec 上り(アップロード)速度テスト結果 データ転送速度 4.86Mbps (607.90kB/sec) アップロードデータ容量 1000kB アップロードに要した時間 1.645秒 測定日時 2006年11月16日(木) 09時45分 利用ブラウザ: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1) Gecko/20061010 Firefox/2.0
SPEED 2.5 (speed.rbbtoday.com)
計測日時 : 2006年11月16日木曜日 09時40分57秒
  下り(ISP→PC): 41.55Mbps
  上り(PC→ISP): 20.83Mbps

んーまあこんなものでしょうか。(rbbtodayではやけに高速に出るのが気になるけども。。。)

時間帯を変えて計測したところ、調子いい時間帯ではが下り40〜45Mbps位、上り10Mbps位、調子悪いときは下り20Mbps程度、上りは1〜2Mbpsまで落ち込んでしまう模様。平均するとD 30Mbps, U 5Mbps位かな。

マンションVDSLタイプではいたって普通というか、まあまあという品質であると。

今日の衝撃

IE(6sp2と7RC1で確認)では以下の単純なコードがうまくいかない。DOMは正しく挿入されているのに主要なブロックのサイズが全部0になってしまい表示されないのだ。

<script type="text/javascript">
function addTable() {
  var table = document.createElement('table');
  var tr = document.createElement('tr');
  var td = document.createElement('td');
  td.appendChild(document.createTextNode('hogehoge'));
  tr.appendChild(td);
  table.appendChild(tr);
  document.getElementById('container1').appendChild(table);
}
</script>

<body onload="addTable()">
<div id="container1"></div>
</body>

同等のHTML片をinnerHTMLに代入すればちゃんと表示される。

ググッたら答えを発見。IEではDOMでappendChildするときはtbodyも省略せず構築しないと表示されない、らしい。。。

こういう本質的でない一つ一つの障害にめげずにトライし続ける根気こそ、DHTML開発に必要なものといえよう。
私はめげたので今日は早く帰ります。

Dojo 0.4.0 リリース

トップにはまだ。

ベースを0.4.0に入れ替えてあっさり動いた!と喜んだらキャッシュが効いていただけの罠。

頼むからもうちょっと詳しく書いてくれというリリースノート(http://dojo.jot.com/WikiHome/Release0Point4)。今回の目玉はgfxでしょうかね。

W-Zero3 [es]がハングした

理由がよく分からない(特に大量にアプリを立ち上げていたわけでもなく)フリーズ。しかもソフトリセット*1が効かない!

電池の蓋をあければハードウェアリセットできるらしいが、そもそも電池はどこに?って悩んだのでここにメモしておく。裏側のintel insideロゴがある領域が実は電池カバーで、SHARPロゴの入った銀色の帯をぐっと押しintelロゴの方向にスライドさせるとふたがあく。結構力が要るのでビビる。

電池カバーを外し穴をスタイラスでつつき、ハードウェアリセット。そしたら何事もなく起動した。よかったよかった。

巷では結構復帰しない症例が報告されている模様。ガクガクブルブル。

*1:キーボード横に付いてる穴をつつくアレ。

ICFPの国際プログラミング・コンテストで日本のチーム「kuma-」が2位に:ITpro

k.inaba氏率いる(?)チームkuma-が2位という快挙。すばらしい。おめでとうございます。

>メンバー4人の使った言語をあわせると Ruby,C,C++,D,Java,Perl

ってのがすごいです。ICFPはいつも上位は関数型言語が占めていたかと。パズル的な問題のアルゴリズムをコアに記述するには、HaskellやらOCamlやらの関数型言語が圧倒的に有利なはずなのです。それをこれらの言語で上位に勝ち抜いたというのがまずすげぇ。

チョー恥ずかしい

入社して最初にやった仕事が、なぜか今頃世に出てきました。今見るととても直したいところだらけでもうムキーってなります。はずかしー。

そもそもまともに動いてないし。運用環境が海の向こうで状況がサッパリ分からないので、直しようにも手が届きません。
まあ今の忙しさではプロジェクト外のことをやる余裕もないわけですが。。。

Googleみたいに20%はプロジェクト外のことをやれ、って環境はいいですねぇ。