- 451 名前:396 mailto:sage [2018/02/20(火) 18:49:16.00 ID:nCkYsCc8.net]
- 遅い原因の1つは、Onldle の中にあることが分かりました。
1. 必要があって、外部ツールによるファイルの更新チェックをしていたところ、 それがとんでもなく重い事が判明。 2. SetTimer で CMainFrame にタイマーをしかけていると、CMainFrame::OnCmdMsg() が、WM_TIMER メッセージが来る度に、それを何倍にも掛け算した回数だけ呼び 出される事が判明。例えば、秒間 N 回のタイマーを仕掛けると、OnCmdMsg が、 10*N 回 呼び出されるような感じです。タイマーメッセージがくる度に、 メニューなどを更新するためのメッセージが来ているような気がします。 多分、本家 Windows では、タイマーメッセージが来ても、そのような事には ならないんじゃないかと思います。 通常、OnCmdMsg は頻度が低いことが 前提になっているので、その中で多少重い処理をしていると、とんでもなく 重たくなる。 なお、透明色を使っている場合、update_surface_region の中の処理の軽重に よって、描画速度が大幅に変わることも確認しました。 ランレングスを数えてリージョンを add_row している箇所を、単純に何も 数えずに行全体で、1個だけ add_row するように
|

|