gdi++.dll 9px

このエントリーをはてなブックマークに追加
104名無し~3.EXE
>>103
yes

もう少し詳しく調べてみた。

普通Win32APIで文字を描く時は
1. まずGetTextExtentPoint系を呼び出して字幅から描画位置などを計算する
2. ExtTextOutなどで描画する
という手順を取る事が多いと思う。

そういう状況を想定しての事かどうかは知らんが、gdi0582以前はGetTextExtentPoint系が
最初に呼ばれた時に文字幅をキャッシュしておいて、その後ExtTextOutなどが呼ばれた時に
事前にキャッシュしておいた文字幅を使って描いていたみたい。

が、gdi0583以降はExtTextOutなどが呼ばれた時にも毎回文字幅を計算している。
つまり、キャッシュミスヒットしまくってる状況に近い?って事かな。

試しに0583のft.cpp 1388行あたりをコメントアウトしてみたら0582以前の軽さになった。