[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:1152]scroll-bar synchlonized redraw test.
- X-ml-count: 1152
- Subject: [MD:1152]scroll-bar synchlonized redraw test.
- From: Miyashita Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: 03 May 1999 05:21:48 +0900
- User-agent: T-gnus/6.10.058 (based on Pterodactyl Gnus v0.76) SEMI/1.13.3 (Komaiko) FLIM/1.12.6 (Family-Kōenmae) Emacs/20.3.8 (i386-*-nt4.0) MULE/4.0 (HANANOEN) Meadow/1.04 Alpha1 (TSUTSUJI)
今までスクロールバーをつかんでスクロールさせても、
もどかしい動きしかしませんでした。
1.04a1でも、しくみはそれほど変わっていません。
問題は、MeadowのEvent Handlingの特性によります。
Meadow のEvent送出部は、優先度の高い
別スレッドになっていて、スクロールバーを動作しているときは、
お構いなしにeventをqueueに突っ込みます。
Emacsのevent処理部は、まだ未処理のeventがある限り、
再描画しません。
しかし、素のWindows NTは、やたらとcontext switchが重いらしく、
スクロールバーを動かすと、Kernel LaryerのProcess Timeが相当
食われます。
というわけで、せめてもの慰みで、Emacs Lisp部分の最適化を行いました。
Cyrix M II 300MHz程度の私のマシンではそれほど効果は出ていませんが、
前よりもたつきは少なくなりました。それにしても、Emacsはdynamic bindingの
処理に結構きついものがあるんですねぇ。
とはいえ、Visual C++ 6.0でフルに最適化をかけた結果、結構快適になりました。
しかし、VC++6.0の最適化はかなり賢くなっていて、Frame pointerとか
Registerの使いまわしをがちがちに最適化するので、
デバッグがVC++5.0よりも飛躍的に辛くなります。
というわけで、皆さんにお配りするAlpha/Beta版binaryは最適化しません。
# また、どうも、VC++6.0の最適化にもバグがあるかもしれないので、
# こちらでも慎重にテストしています。
しかし、Compilerの最適化というのはすごいものがありますね。VC++の
RegisterとかFrameの使い方はすばらしいものがあります。
まあ、だれか、PentiumII-400MHzとか、K6-IIIのマシンとかで
スクロールをためしてみてください。
### いかん、酔った頭でこういう最適化するとは...^^;;;
from himi
1.05の目標はDLL分割 + DelayLoadかな?
それとも、そろそろIMMにけりをつけるのかな?
まあ、優先順位からいくとIMMかな。