タグ

ブックマーク / isoparametric.hatenablog.com (3)

  • dequeも忘れないであげてね(><) - 神様なんて信じない僕らのために

    Java 6 からdequeことArrayDequeが実装されています。 dequeって聞き慣れない! とか思うかもしれないですが「Double Ended Queue」で両端キューです。 STLではvector,list,dequeはよく使われると思うのですが、Javaではなかったんですね。 特徴としては、 先頭への挿入(削除) 終端への挿入(削除) がO(1)で出来ます。 LinkedListでも同様のことができますが、LinkedListより高速で省メモリです。 (ただし、先頭と終端以外への挿入はLinkedListより遅いO(n)になります) また、ランダムアクセスも高速です。 アルゴリズム的にはリングバッファでvector(ArrayList)がわっかになっているようなイメージです。 headとtailの位置を覚えており、 配列(バッファ)の中のどこが先頭でどこが終端か、 を覚え

    dequeも忘れないであげてね(><) - 神様なんて信じない僕らのために
    tacroe
    tacroe 2009/08/10
  • インターフェイスに全てのオブジェクトが行えないメンバ関数を追加していくときの違和感は異常 - 神様なんて信じない僕らのために

    何を抽象化しようとして、 例えば、 非仮想関数を束ねて、例えば、 図形の ObjectSphere や ObjectBox、 はたまた、ObjectRenderXXXX なんかを統合して、 ObjectShapeとして、 メソッドにvirtualを付けて メソッドをインターフェイスに公開する時の違和感は異常。 要するに、こうすると基底にはできない操作を公開することになる。 これは継承方式としてあるまじき行為ですらある。 描画を行いたいものは沢山あって、 描画形状も様々なものがある。 要するに、単なる箱や球体から、 キャラクタの形状をしているもの、 はたまたビルボードなど。 これらに対して適切で統合されたインターフェイスをObjectShapeに集約すれば すべてのオブジェクトに対して可能である操作しかもたない役立たずクラスか、 可能ではない操作をObjectShapeに追加し神様クラスにな

    インターフェイスに全てのオブジェクトが行えないメンバ関数を追加していくときの違和感は異常 - 神様なんて信じない僕らのために
    tacroe
    tacroe 2009/05/17
  • ダンプを読めば世界がみえる - 神様なんて信じない僕らのために

    dlmallocを読み下し中。 何をしているかは大体解った。 メモリブロックに対して何かを行おうとするプログラムを読み解くとき、 メモリダンプを眺めるということが、 非常に有効だと思った。 プログラムの、メモリの海を見るために必要なのはやはりメモリダンプだ。 メモリをeeとかffとか適当な値で埋めておいて、 ある関数をコールして、 戻ってきたら海を眺める。 そうすると、海には着実な変化が訪れている。 こいつはサイズ(インテジャ)だな、 こいつはアドレスだな。 色んなことがそこには見える。 dlmallocの何が素敵かって、 メモリブロックサイズが4の倍数であることに目を付けて、 0ビット目には一つ前のチャンクの情報の有無を、 1ビット目には使用か未使用かのフラグを設けたことだ。 これはRubyの実装などでも行っていることだけれど、 こうしたことに気が付く人たちは当に凄い、と思う。 ドキド

    ダンプを読めば世界がみえる - 神様なんて信じない僕らのために
    tacroe
    tacroe 2009/05/10
    [c/c++] dlmalloc
  • 1