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プロパティというものを用意するのか、全くもって理解できません。それがマイクロソフト流なのかもしれませんが。あーもう、本当にいらぬ手間と時間をかけてしまった。

自分で言うのもなんだけど

昨日、ちょっとした用事?でBMSEを初めて自分で使ってみました。・・・何だこのソフト、クソ重いぞ!?使えない、というほどまで重くはないのですが、これでも必死に軽量化したはず。というか前はこんなに重かったっけ・・・?と、よく見てみるとタスクバーにあるMS-IMEアイコンが何やら点滅しています。どうやらスクロールするごとに入力の切り替え?が発生するのか、MS-IME側の何かの処理が重いのかな・・・?

というわけで、タスクマネージャでCPU使用率を見てみました。BMSEで必死にスクロールしている最中のCPU使用率です。結果は以下のとおり。

  • BMSE.exe→50~60%くらい
  • imejpmgr.exe(たぶんMS-IMEのマネージャ?)→5%くらい
  • explorer.exe→20~30%くらい
  • point32.exe(マウスドライバ)→20%くらい

次にスクロールしまくった後にスクロールを止めてみると、

  • BMSE.exe→0%
  • imejpmgr.exe→10%弱
  • explorer.exe→80~90%くらい
  • point32.exe→0%

うーむ、これは興味深い結果に・・・。explorer.exeの処理が多いのはアイコンが点滅している事からもわかりますが、意外なことにpoint32.exeも20%も消費・・・。何か設計がまずかったかなぁ?というか、OS再インストする前はIMEアイコンを完全に消してペン型のアイコンにしていたはずなんだけど、その時は何も問題なかったような(というかこれだけ重かったら何らかの対処をしたはず)。どうやってペン型アイコンにしたのか、誰か教えてください(蹴

というわけで、何らかの対処を取りたいと思います。成功すれば今まで重かった人もちょっと快適になるかも!?

コメント (3)

1: tokonats (2004-10-17 05:41)
何とかうまくいったー。あーよかった。
2: とるひあ (2004-10-20 07:19)
りりーすおつ!!
3: tokonats (2004-10-20 14:25)
あり!!!!

[ このエントリへはコメント出来ません ]