基礎をおろそかにするべきではない | 2013.08.16 01:44 |
毎度のように話題にしているXopsAddonCreatorにも引っ掛かってくる っというより出だしは
そのままだが、XopsAddonCreatorシステムの外部データ(設定ファイルなど)は、ポイント
エディタ(XPE+)と同様に、INIファイルを採用している。
自分の中で使用実績が積んであり、中身も読みやすく編集もしやすい、Windowsの標準フォー
マットであるため読み書きするAPIも用意されている ということもあって、個人的に好きな
ファイル形式の1つである。
ただし、この標準APIのGetPrivateProfileInt()関数とWritePrivateProfileSection()関数には
最大の弱点がある。動作速度の重さだ。
これらの関数には毎度ファイル名を指定する必要があるのだが、これは毎回ファイルを開き
直していることを意味する。高速なストレージ環境だと問題ないが、古めかしいHDD上などで
かなりの数の項目数を読み込ませる場合は、致命的なほど重い。
XopsAddonCreatorも使用環境によっては起動時間の大部分を、言語ファイルとXOPSの
パラメーター設定ファイルの読み込みに要す場合もある。
開発の途中からある程度覚悟はしていたが、INIファイルの読み込み関数をフルスクラッチで
自作してしまった。 書き込み機能に関しては、ソフトウェア上でオプション設定とプリセットの
新規登録くらいにしか使っておらず、しかも項目数が少ないので効果がないと判断し作って
いない。
簡単なベンチマークを使って測定すると、手元の自分の環境で3秒近く掛かっていた読み込み
が、わずか0.01秒強で終わるようになった。当社比で300倍である。まさしく「爆速」。
(決してこの話を主題にしたいわけではないで、詳細は割愛する)
話を本題に進める。
この自作したINIファイルの読み込み関数は、完全に自分オリジナルのアルゴリズムである。
中身はC言語による文字列操作の塊であるが、恥ずかしながら7月12日に話した通りこの
ソフトウェアの開発でここまでC/C++をやりこんでなかったら作れなかったと思う。
例えDirectXで3Dゲームを作っていても、ポインタとか文字列操作が怪しかった前の自分だと
作り上げることができなかったか、たとえ形になってもバグだらけだったと思う。
XopsAddonCreatorの開発を通して、改めてC/C++をやり直すことができて本当に良かっ
たと感じている。
基礎固めがここまで大切だったと実感したのは久しぶりだ。改めてこの時を思い出した。
効果が出るのが何年も先の話だったりするが、その何年も先には必要になるものである。
一歩踏み込んだ応用課題に取り組むには避けて通れない。
自分の独学スタイルは基礎をおろそかにしてしまうことが多い気がするが、今後はその曖昧
な知識を見つけて潰しながら(勉強し直しながら)、基礎固めをしていこうと思う。
そのままだが、XopsAddonCreatorシステムの外部データ(設定ファイルなど)は、ポイント
エディタ(XPE+)と同様に、INIファイルを採用している。
自分の中で使用実績が積んであり、中身も読みやすく編集もしやすい、Windowsの標準フォー
マットであるため読み書きするAPIも用意されている ということもあって、個人的に好きな
ファイル形式の1つである。
ただし、この標準APIのGetPrivateProfileInt()関数とWritePrivateProfileSection()関数には
最大の弱点がある。動作速度の重さだ。
これらの関数には毎度ファイル名を指定する必要があるのだが、これは毎回ファイルを開き
直していることを意味する。高速なストレージ環境だと問題ないが、古めかしいHDD上などで
かなりの数の項目数を読み込ませる場合は、致命的なほど重い。
XopsAddonCreatorも使用環境によっては起動時間の大部分を、言語ファイルとXOPSの
パラメーター設定ファイルの読み込みに要す場合もある。
開発の途中からある程度覚悟はしていたが、INIファイルの読み込み関数をフルスクラッチで
自作してしまった。 書き込み機能に関しては、ソフトウェア上でオプション設定とプリセットの
新規登録くらいにしか使っておらず、しかも項目数が少ないので効果がないと判断し作って
いない。
簡単なベンチマークを使って測定すると、手元の自分の環境で3秒近く掛かっていた読み込み
が、わずか0.01秒強で終わるようになった。当社比で300倍である。まさしく「爆速」。
(決してこの話を主題にしたいわけではないで、詳細は割愛する)
話を本題に進める。
この自作したINIファイルの読み込み関数は、完全に自分オリジナルのアルゴリズムである。
中身はC言語による文字列操作の塊であるが、恥ずかしながら7月12日に話した通りこの
ソフトウェアの開発でここまでC/C++をやりこんでなかったら作れなかったと思う。
例えDirectXで3Dゲームを作っていても、ポインタとか文字列操作が怪しかった前の自分だと
作り上げることができなかったか、たとえ形になってもバグだらけだったと思う。
XopsAddonCreatorの開発を通して、改めてC/C++をやり直すことができて本当に良かっ
たと感じている。
基礎固めがここまで大切だったと実感したのは久しぶりだ。改めてこの時を思い出した。
効果が出るのが何年も先の話だったりするが、その何年も先には必要になるものである。
一歩踏み込んだ応用課題に取り組むには避けて通れない。
自分の独学スタイルは基礎をおろそかにしてしまうことが多い気がするが、今後はその曖昧
な知識を見つけて潰しながら(勉強し直しながら)、基礎固めをしていこうと思う。
category : 管理人の独り言 | comment [2] |