ちょっと自前の画像ロードルーチンをSIMDバージョンへと変更するためにいろいろと処理を変更しているところなのですが、
処理の変更中に現システムで微妙な不具合っぽいポイント(無視できるレベルだが)である「画像ロードに妙に時間がかかる」理由がやっとわかりました・・・。
画像フォーマットは処理と暗号化(的なもの)の関係で、独自フォーマットとPNGを必要に応じて変更して使っていたのですが、
独自フォーマットの読み込みを行うときに処理ミス(というより無駄な処理)があり、それが
「フォーマット確認時と画像展開時にメモリに展開してあるファイルデータを再度展開のためにメモリ確保&コピーしている」
という処理の安全をとったつもりが処理の遅延を起こす原因となる間抜けなことをやっていたことに気がついて唖然でした。
つまり、そのファイルを読み出すためにファイルサイズ分3回もメモリ確保&コピーをやっているという無駄があったわけですね。
気がついたからにはフォーマットの補修とともにその部分を排除して再度構築し直せばその部分の問題も一件落着、と。
何となく思っていることとして、やっぱり初めて組んだ部分は何か不具合があるもの(見えるものも見えないものも)だな~ということで、
特に、3年以上前の自分が組んだプログラムソースになるとだいたい何かしらおかしいポイントが見つかるもので、
眺めなおした方がいいものだな~と思いました。
ちなみに、blogのプログラムソース類はほとんど自分が組んだプログラムから抜粋しています。
一応「ゲームで使う」といっているのは私の作った(ゲーム)プログラム内で使われているコードだからですね・・・。
もしかしてもっと概念的にやった方がいいのかな~とも思いますが、今のところはこんな感じで記事を書いていきたいと思います。