地味だけど大きい出力ウインドウの改善

英語版ではあるけれどVisual Studio 2005(以降VS2005)のRTMが使えるようになったことで、ここ数日のエントリは同統合開発環境に関することが多いです。Eclipseの2.xが出てきた時もそうだったけれど、自分がメインで使用すると決めた道具となるソフトウェアがブラッシュアップされていくのはオープンソースであろうとなかろうととても興奮するし、どうしても話題に採りあげたくなるものなのです。

今回はVS2005の出力ウインドウについて。
もう何度も書いていますが現在のプロジェクトでは.NET2.0をターゲットとしたリッチクライアント(スマートクライアント)用のフレームワークを書いています。(β1の頃から書いていますがRTMがアップされたのでやっと堂々とお披露目ができる..嬉しい..)

巷のリッチクライアントの殆どがそうであるように拙作のフレームワークもWebサーバとの通信はHTTPでありHTTP-over-XML等でRPC様やSOA様の通信を行っているのですが、このような作りにした場合どうしてもログ、それも大量のログを採取する必要に迫られることになります。いきおいVS2005の出力ウインドウにも大量のログを出力する事になるわけですがこれが重い。β2の頃での話ですが100行〜200行程度の整形されたXMLを出力ウインドウにlog4nのロガーから直接吐くだけで10秒近くかかるし何が嫌だってその間はVS2005のUIを描画しているスレッドが10秒位固まってしまう位なのです。

β2が出たのが遅かったこともあるのですがこれはlog4nのTraceAppenderの実装が重いのだと諦めていましたが、今使っているVS2005英語版RTMに変えたらあ〜ら不思議、200行程度の整形されたXML等一瞬で出力ウインドウに表示されるように改善されていました。

かなり大きいログを出力してもびくともしないようですしリソースも極端に増えていないようですがどのように出力方法を変えたのでしょうかね。私も経験ありますがプログラムを組んでいて、このように(例えばレスポンスが数秒改善とか)ドラスティックに性能の改善が実現できた時って一番やりがいを感じるんですよね。