VBなんて嫌いだ

先日の記事でBMSEが重い、ということを書いたのですが、ついにその根本的解決方法を発見したのでここに書いておきます。ゲイツへのささやかな恨みをこめて。

実際にまずかったのは、文字列出力のためにFontSizeプロパティとFontItalicプロパティを動的に(しかも頻繁に)変更していた事でした(実際にはFontBoldプロパティなども速度低下の原因になります)。そして何よりも悪かったのが、IMEアイコンが何かよくわからない理由で激しい点滅を繰り返し、それによって実際以上の速度低下を引き起こしていたということでした(これの詳しい原因は未だに掴めていません)。

では、その解決方法は?それは、「FontSizeプロパティではなくFontオブジェクトのSizeプロパティを使う」ということでした。細かく説明すると、「Fontオブジェクトの中にSize、Italic、Bolcなどのプロパティが存在し、そちらの値を変更すればよかった」ということです。実際のコードは「frmMain.FontSize = n」から「frmMain.Font.Size = n」という風になります。これによって速度向上はもちろん(100万回ループさせてみたところ300ミリ秒ほど早くなりました)、IMEアイコンの点滅もなくなるので、実際にはかなりの速度向上になります。

これに気づいたとき、思わず「そんなバカな!」と声をあげてしまいました。Fontオブジェクトのことをよく知らなかった自分も悪いのですが、それならなぜFontSizeプロパティというものを用意するのか、全くもって理解できません。それがマイクロソフト流なのかもしれませんが。あーもう、本当にいらぬ手間と時間をかけてしまった。