文字描画の意外に遅い部分
お手製の文字描画ルーチンがgprofでシステム全体の30%以上を締めていることが分かる。
どうもEUC->グリフインデックスな部分で遅いようだ。
そういやここって2分木探索してたなぁと反省し、libchashを使ってみたがあんまり高速化しない。
しょうがないので次のような超手抜きキャッシュルーチンを入れてみた。
ぬぅ、50%速くなってしまった。おそるべしキャッシュ。
GL2D_PFont_Cache* cache = font->cache + (code & (PFONT_CACHE_NUMBER - 1)); if (cache->code == code) { glyph_index = cache->index; } else { glyph_index = convertCharcode2GlyphIndex(font, code); cache->code = code; cache->index = glyph_index; }
そして良く考えたら 94 x 94 x 2 x sizeof(unsigned char) = 約35kbyte 程度の配列があれば一瞬で文字コードが引けることに気がつく。なんてこったい、明日やって差を見てみよう。