クリアした~!
老王オーを最後に持ってきたけど、意外に弱かったような・・・
個人的には、マンイーターと不潔な巨像が強かったなぁ
逆に弱いのは愚か者の偶像だった
多分、自分がチキンでソウルの矢に頼ってたからだ、うん
つらぬきの騎士で、ソウルの矢を使わず、剣で戦うことができるようになったかな
これやってたら剣道やってみたくなった
それにしても見事な厨二で良かった
ダークソウルも今度やってみたい
カテゴリがC++なので、これからその話を・・・
まず、アロケーター
最速のアロケーターを作るにはどうすればいいものか・・・
最低限
・言われたサイズのメモリを確保する
・確保した領域は移動しない
なるべくすること
・確保スピードが速い
・フラグメントしにくい
こんなかんじですね
これが守れたら、高品質って訳です
だけど・・・
TLSF最強じゃん!
くそう、TLSFを超えるのは無理か
・言われたサイズのメモリを確保する
これはアロケーターとして当たり前のことなので、対策もなにもないですね
・確保したデータは移動しない
これがなければ色々すごいアロケーターがあっただろうに
データを確保したら、多分返り値でそのデータ領域のアドレスを返すでしょう
それで、そのアドレスをポインターで受け取る
そのあとにデータ領域の場所が変わってしまっては、ポインターの中身が無駄なところをさしてしまいます
・確保スピードが速い
まず、newより早くないと作る意味ないですね
つまり(?)、アロケーターの中でnewを使ってたら意味ないわけです(当たり前か・・・)
そこでメモリープールの出番
あらかじめある程度のメモリーを確保しておいて、
そのメモリーから、与えられたサイズの分だけ、渡すというものです
な~んだこれでスピード面はOKか~
というわけではありません
アロケーターのほとんどではメモリプールを使ってるからです
TLSFもしかりです
なので、この先、つまりメモリーをどう確保するかがキーです
まずmemcpyなどは使わないほうがいいです
memcpyは、あるデータを他の場所にコピーするものですが
僕は、最初、memcpyを使って、アロケーターをつくれると思いましたが、これには欠点が
データのサイズが小さいならば、全然良いんですが、大きいサイズをコピーしようとすると
コピーする量が増えるということになり、速度が低下してしまいます
なので、コピーするものは使わないほうが・・・いいと思います・・・
コピーを使わないで、データを確保・・・
ムズい・・・
要は、確保したデータ同士がぶつからなければいいわけです
確保したデータ領域がなんの意味もなければいい
ここから、確保したデータであれ、管理しなければなりません(もう日本語が意味わかんnくぁwせdrftgyふじこlp)
いままで言ってたことを整理して、どんなふうにすればいいか
・データを管理する
・・・めんどくさくなってきた・・・
どうせ読んでる人も「この文章読めね(^_^;;;;;」って思ってるだろうし
こんど結論考えて書きます・・・
モデリングソフトも作りたいし