プロフィール

JaJa

JaJa
ツイニ スマートフォンヲ テニイレタゾ~! ('▽'ノ

...Now Developing
→ちょっと大きいサイズ
ブログ内検索
リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2012/05/15▼フォントデータ作成、再び

ひとまず、やんわり掴めている重たい処理部をリストアップ。
1.デバッグ表示処理
2.文字列レンダリング処理
3.内部処理

1はとりあえず表示できれば良いやー、な感じに作ってたので自業自得ですね。。。ぐぐぐ。
まあ、リリース版で丸ごとカットする部分だから、手直しの優先度は低め。

2は予想外に重たい処理となってました。
ある意味、今の段階で判明してくれて良かったのかも。タイムルーラーのおかげですね。('▽'
ここは要改善部分です!

3は直接見たり、触れる部分ではないので、ちょっと厄介です。
ですが、内部処理というのは自分の書いたコードをもとに行われているものなので、ここを軽くしたい場合は起因する自分のコードを直すしかありません。
どこを直せば良いか?……はアタリを付けながら、自分のコードを書き換えたり、コメントアウトしてみたりして、内部処理量の変化を都度確認しながら探っていくしかないかな、と。
ローラー作戦っぽい感じで、これはまた手間がかかりそうな予感だけど仕方ないのかな。

3つの中で、3が一番重い部分だったので、「大変そうだけど、仕方ないのかなー」と覚悟を決めたわけですが……なんと、この懸案事項があっさり解決してしまったのでした!('▽'=3
普段はプログラムの実行チェックを「デバッグver.の実行」で行っているのですが(強力なデバッガ機能が使えるので)、ためしに「リリースver.の実行」で行ってみたら、比べ物にならないくらい軽くなって、しかも処理時間の増減変動幅も小さくなり、劇的に安定したではありませんか! 秒間60フレームでも回せる程に。
平均処理時間を計測してみると、だいたい1/20くらいになってました。

嬉しい結果だったのですが、効果がありすぎて逆にちょっと不安になり、知人のゲームプログラマーさんに「デバッグver.とリリースver.ってこんなに違うものなの?」と聞いてみたら、「そんなもんだよ!」と即答されました。
そんなもんなのかー、すごいな最適化の効果って。('□'
(リリースver.の標準設定では、コードの最適化が行われるようになっていて、そのせいで実行速度に雲泥の差が生まれるらしいです。)

というわけで、3は解決したので、今回手をつける部分は2だけに決めました。
1については、そのとき必要なデバッグ表示だけ使うことで負荷軽減する方向で。

文字列レンダリング処理を行っているコードを眺めながら、いろいろ負荷削減策を練る。
幾つかの策を考えてみたけど、うまく行けば一番負荷が軽くなる(であろう)策からやってみることに。

この策で予想される効果は……
○文字列レンダリング処理の負荷が約1/10になる!
×文字列レンダリングに必要なメモリ量が2倍になる?
×1フォントにつき、フォントデータを2種類作らないといけない

○(良い効果)と×(悪い効果+増える作業量)を天秤にかけてみて、採用するかどうかを決めたいと思います。
それを検証するために、まずは2種類目となる文字フォントデータを作らなくては!

そんな感じで、今日はフォントデータの制作作業です。
日付が変わるあたりで、ひらかな、カタカナのデータまで完成。

20120515.jpg
▲まあ、楽しい作業ではあるんですよね。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。