読者です 読者をやめる 読者になる 読者になる

ブログっ...!

自分についてのメモしかないので、見る価値がないよ。(人に説明する思いやりが皆無に近いよ。)

ほげ

なんだかプログラム書く度思うことなんだけど、 自分がいわゆるシステムプログラミングに詳しくないせいで、順序に迷う。

たとえば、あるファイルを読み込んで、それの一部を細切れの配列に格納したいときに (細切れの配列の長さ自体はファイル内に記述があって長さがバラバラ、それを読み込む度に毎度mallocするとする)、 一旦適当な大きなバッファみたいなところに全てを詰めんこんで、ファイルストリームを閉じてから、細切れにすべきか。 それとも、そんなバッファは使わず、開いたまま、細切れにしていくか。

結局今回後者にしたけど、前者は途中でmallocとか大げさな処理を挟まなくてシンプルでよさそうだと思ったんだよ。。ファイルの大きさが小さいとわかっているときは前者でも良いのかな。 それぞれの長所と短所isなに。

あと、複数配列があって、そのひとつひとつ別々に何か処理をするんだけど、 その配列はそれ一つで閉じているので、一つの処理が終わり次第、対象の配列を解放して良いとするじゃない。 処理A -> 配列A解放 -> 処理B -> 配列B解放 -> ... -> 処理Z -> 配列Z解放 てやると、ループ一つで閉じれるけど、

それでも、 処理A -> 処理B -> ... -> 処理Z -> 配列A解放 -> 配列B解放 -> ... -> 配列Z解放 てな感じで全ての処理が終わってから、解放する方が良いと思うんだよな。。 もちろん、解放は最後にするのがお行儀が良いからっていうのもあるけど、 解放がひとまとめになっているほうが、最近の入れ知恵、空リスト氏のキャッシュヒット率が良いのではないかという素人ながらの考え。。

実質的には行うことが全く同じ処理Aと処理A'のどちらが「速い」かを示すときに、 (たとえば、大域変数にするか、引数にするか、とか) 天秤がキャッシュヒット率くらいしかない。

こういうことを考えしまうと、プログラム書くのも遅くなり、故、すぐに疲れてしまう。 こんなの気をつけても微々たるものなので、そもそもの処理A, B, ..., Zを高速化することを考えてほうがよいのでは?というのは御尤もなのだが、ええい、気にしちゃうんだよ、どうしてもな...!! 一度抱いた疑問はなるはやで解決しておいたほうが良いと思ったので、ここにメモしておくのみである。。

システムプログラミング。。である。。