ややプログラム紀行

博士2年のプログラムに関する日記

デモンズソウル

クリアした~!

老王オーを最後に持ってきたけど、意外に弱かったような・・・

個人的には、マンイーターと不潔な巨像が強かったなぁ

逆に弱いのは愚か者の偶像だった

多分、自分がチキンでソウルの矢に頼ってたからだ、うん

つらぬきの騎士で、ソウルの矢を使わず、剣で戦うことができるようになったかな

これやってたら剣道やってみたくなった

それにしても見事な厨二で良かった

ダークソウルも今度やってみたい

カテゴリがC++なので、これからその話を・・・

まず、アロケーター

最速のアロケーターを作るにはどうすればいいものか・・・

最低限

・言われたサイズのメモリを確保する

・確保した領域は移動しない

なるべくすること

・確保スピードが速い

・フラグメントしにくい

こんなかんじですね

これが守れたら、高品質って訳です

だけど・・・

TLSF最強じゃん!

くそう、TLSFを超えるのは無理か

・言われたサイズのメモリを確保する

これはアロケーターとして当たり前のことなので、対策もなにもないですね

・確保したデータは移動しない

これがなければ色々すごいアロケーターがあっただろうに

データを確保したら、多分返り値でそのデータ領域のアドレスを返すでしょう

それで、そのアドレスをポインターで受け取る

そのあとにデータ領域の場所が変わってしまっては、ポインターの中身が無駄なところをさしてしまいます

・確保スピードが速い

まず、newより早くないと作る意味ないですね

つまり(?)、アロケーターの中でnewを使ってたら意味ないわけです(当たり前か・・・)

そこでメモリープールの出番

あらかじめある程度のメモリーを確保しておいて、

そのメモリーから、与えられたサイズの分だけ、渡すというものです

な~んだこれでスピード面はOKか~

というわけではありません

アロケーターのほとんどではメモリプールを使ってるからです

TLSFもしかりです

なので、この先、つまりメモリーをどう確保するかがキーです

まずmemcpyなどは使わないほうがいいです

memcpyは、あるデータを他の場所にコピーするものですが

僕は、最初、memcpyを使って、アロケーターをつくれると思いましたが、これには欠点が

データのサイズが小さいならば、全然良いんですが、大きいサイズをコピーしようとすると

コピーする量が増えるということになり、速度が低下してしまいます

なので、コピーするものは使わないほうが・・・いいと思います・・・

コピーを使わないで、データを確保・・・

ムズい・・・

要は、確保したデータ同士がぶつからなければいいわけです

確保したデータ領域がなんの意味もなければいい

ここから、確保したデータであれ、管理しなければなりません(もう日本語が意味わかんnくぁwせdrftgyふじこlp)

いままで言ってたことを整理して、どんなふうにすればいいか

・データを管理する

・・・めんどくさくなってきた・・・

どうせ読んでる人も「この文章読めね(^_^;;;;;」って思ってるだろうし

こんど結論考えて書きます・・・

モデリングソフトも作りたいし