
Mac de sigmarionII
高速化(GLYPHCACHEの最適値)
PCの高速化、というとまず頭に浮かぶのはクロックアップです。でも、これは危険な上に、保証もきかなくなります。
その上、今のPCは昔のようにクリスタルの交換ではクロックアップできません。ごま粒のような抵抗の付け直しを覚悟しなくてはなりません。
不器用な大西にはまず不可能な改造なので、これはパス。(^_^;
ということで、レジストリの書き換えで対応したいと思います。
デフォルトでの速度を測定する。(速度の謎)
HKEY_LOCAL_MACHINE\SYSTEM\GDI
のLimitというDWORD値を見ると、デフォルトでは00008000(32768)となっています。
ここを書き換えてフォントのキャッシュを増やすことによって、高速化します。
その前に、書き換えた後の速度と比較するために、まずデフォルトの速度を測定してみました。
使用したのはDBenchというベンチマークソフトです。
1回目

259でした。
キャッシュが効いてるか調べるためにもう1度
2回目

215です。
ほとんど同じです。ということは、Textのキャッシュは効いてません。
ところが、Text drawだけテストすると

1106!
あれ????
もう1度、全部のテスト

136
もとに戻ってる????
というか、遅い。
謎を解く鍵は、キャッシュの特性にあるようです。
GLYPHCACHEは、単なるフォントキャッシュではなくて、グラフィックなどもキャッシュしているようです。
グラフィックを表示してからテキストを表示させると、グラフィックでキャッシュがいっぱいになって、遅くなるのではないのでしょうか。
ところが値をかえて、ベンチマークをとったら、またまた???
値16000

に設定。

デフォルトに比べて高速化されました。
値24000

さらに高速化。
値32000

ゲッ!遅くなった。再度計測しましたが、結果は同じでした。
体感的にも明らかに遅くなってます。
値40000

あれ?また高速化。
値48000

あれれ???遅くなってる。体感的にも、アイコンの表示が遅くなってます。
原因はわかりませんが、キャッシュを大きくしても高速化に効果的とは限らないようです。
それに値2400と値4000と速さは同じくらい(^_^;
最適値は2400と1600の間くらいにありそうです。
そこで、
値20000で計測しました。

このへんが速そうです。
念のため、値28000に増やしてみました。

やっぱり遅くなってます。
結果をまとめてみると、下図のようになりました。(デフォルトは8000でした)
| Cache |
Int calc |
double calc |
Circle draw |
Rectangle draw |
Text draw |
Scroll |
| 8000 |
1517 |
578 |
297 |
390 |
259 |
13 |
| 16000 |
1658 |
575 |
366 |
1819 |
738 |
9 |
| 24000 |
1628 |
579 |
307 |
1736 |
1259 |
16 |
| 32000 |
1703 |
572 |
294 |
417 |
273 |
14 |
| 40000 |
1675 |
578 |
346 |
1715 |
1188 |
11 |
| 48000 |
1658 |
572 |
290 |
397 |
265 |
14 |
| 20000 |
1700 |
579 |
298 |
1859 |
1233 |
17 |
| 28000 |
1610 |
580 |
302 |
389 |
255 |
13 |
キャッシュの増加が必ずしも高速化に貢献しないのがわかります。(原因不明:多分、キャッシュを増やしすぎ
るとシステムの動作にに障害を起こすのでしょう)
結論
キャッシュの大きさは16進で20000くらいがいいようです。
大西は20000にして使っていますが、障害は出ていません。
キャッシュの謎ですが、PDA-JAPANでどろんぱさんが原因を書きこんでくださいました。
「キャッシュって一時退避したものと必要とされるものが合致する必要があると思います。キャッシュが大きすぎると命令に対して既存キャッシュの検索に必要な時間がかかってしまうのでは?」
なるほど。どろんぱさん、ありがとうございました。


|