問題点@ | AniLaPaint で作品名を選択した後に、メインウィンドウが開くまでの時間が時と共にどんどん遅くなっていく現象。 CPU 速度などによるが、1分以上かかる場合もある。 |
---|---|
問題点A | AniLaPaint を起動して、メインウィンドウが表示された後、メニューを最初に開いたときに必ずしばらく待たされる。 2回か3回目にメニューを開いた時も待たされる場合がある。それ以降は正常。 |
問題点B | AniLaPaint 起動中に OS のコントロールパネルや設定から表示設定を変更したり、AniLaPaint の 「設定(N)」 メニューの 「メインウィンドウの外観(L)」 から外観を変更したりすると、@Aと同様の待ち時間がかかる場合があります。 |
@ABの原因 | 上記の問題点は全て、 Windows の GDI 関連の API である GetPixel 関数が OS 起動後から呼ばれる回数に比例して実行速度が落ちていく OS 自体のバグによるものです。 AniLaPaint では、マイクロソフト社の「Visual Studio 2013 の Visual C++ 再頒布可能パッケージ (x86)」を使用しており、 その内部で起動時にツールバーやメニューバーの画像の更新処理を行うので、そこで GetPixel 関数が多用されているために起動するたびに起動が遅くなっていきます。 しかも、悪いことに Windows 10 は 「シャットダウン」 しても可能な限り前回の状態を保持しつつ次回の起動に備えているので、次の 「電源ON」 後も 「スリープ」 した時と同じように、前回までの GetPixel の遅さも引き継ぎます。 再起動すると一時的に速くなりまた次第に遅くなっていきます。 作者自身が書いたコード部分では、元より Win32API の GetPixel, SetPixel を使用していません。 つまり、上記問題点@〜B以外の部分でこのバグによって遅くなることはありません。 |
i7-4790K CPU の場合 | 修正前 | 修正後 |
---|---|---|
Windows 10 (1709) Fall Creators Update | 4.5〜70 秒 | 2.5 秒 |
Windows 10 (1703) Creators Update | 4.5 秒 | 2.5 秒 |
Windows 8.1 | 3 秒 | 2.5 秒 |
Windows 7 | 2.5 秒 | 2 秒 |