2004-06-28 [長年日記]

[Q3] インデックスの形式 (3)

コンバータも実装したので今日のNightly Buildから入ります(BTS:558)。古い形式の場合には起動時に自動的に変換されます。変換される前にメッセージボックスで警告がでます*1が、変換する前にはバックアップを取るようにしてください。

ところで最初にコンバータを作ってみたらやたら遅いので調べてみたところ、安全を期してしばしばFlushFileBuffersを呼び出すようにしていたのが原因でした。この呼び出しは予想以上に遅いようなので明示的には呼ばないようにしました*2。その結果、受信(特にIMAP4やNNTPで本文をキャッシュしない設定での受信)のパフォーマンスがかなり上がっています。

*1  結構重要で長いので、日本語環境の場合には日本語で出るようにしておきました

*2  明示的に呼ばなくても適当にOSがフラッシュしてくれるので、OSごとクラッシュしたときくらいしかデータの安全性に差がないと思います

VCのwcscmpはintrinsicではない

strcmpはintrinsicなのでwcscmpもintrinsicだと思っていたのですが、ちゃんと調べてみたらintrinsicではありませんでした。

実際にstrcmpとwcscmpを含んだソースを/Oi付きでコンパイルしてみたところ、strcmpはインラインで展開されましたが、wcscmpは普通の関数呼び出しになりました。

ということは、wcscmpをif - else ifで並べているようなところは、一文字目でswitchした方が速くなりそうですね。strcmpだとほとんど変わらないんですが*1

*1  データにも拠りますけど


トップ «前の日記(2004-06-27) 最新 次の日記(2004-06-29)»