ものがたり(旧)

atsushieno.hatenablog.com に続く

なんか各所を見ていていつも気になるんだけど、MS製品のベータ版を仕事用のマシンで使う人っていないの? MS社の案件をやってた時は、僕は当然のように使ってましたが。だってそれが要件だし。まあ個人の想像力の欠如の問題だからどうでもいいけど。

そんなわけで、.NET Framework beta2はいつ出るんかいな、と思いながら、XmlTextReaderの実装を見直している。とりあえず当面の目標は最適化だったのだけど、このクラスってもうかなり最適化の仕事はしたんだよなぁと思いつつ、コードをあらためて眺めていたら…うーん、まだまだいける。とりあえず、2日で処理時間を2/3に落とすことができた。

そんなわけで、そっちはある程度成果が出たので、今は2.0用の新しいXmlTextReaderの実装を考えている。といっても、別にコードをフルスクラッチで書こうとかいう話ではない。2.0ではResolveEntity()がサポートされていて、これをサポートするあらゆるXmlReaderは、expanded entityとdocument entityの2つを操らなければならない。その関係で、MSのXmlTextReaderは、それ自体は単なるpublic APIの入り口になっていて、テキストパーサとしての機能はXmlTextReaderImplっていう謎の内部クラスになっているようだ(stacktraceを見る限りでは)。

僕は以前から、ResolveEntity()をサポートする専用のクラスがあった方が良いんじゃないか、と考えていたのだけど、そろそろ真面目に検討した方が良いかもしれない。

2.0のXmlTextReaderは、エンコーディングまわりでもコードの改善が見られる。といっても、機能的には1.1と変わらないはずだけど。monoでは作りやすくなっているはずだ。