タグ

ブックマーク / mirichi.hatenadiary.org (2)

  • RenderTargetの生成と解放 - mirichiの日記

    DXRubyの描画予約順ソートはマージソートを採用している。初期の頃はシンプルなバブルソートだったのだが、さすがにアレなのでマージソートに変更したのだ。なぜマージソートを選択したのかというと、描画優先順が同一だった場合、メソッドを発行した順に描画される必要があるからソートは安定ソートであるのがまず前提で、それなりに速く、実行時間の変動が少ないからだ。 1フレームという規定時間内に処理が完了する必要がある場合、ある処理の実行時間が想定できないと手痛いことになる。最も遅い時間にあわせて他を切り詰めないといけなくなるからだ。ソートの場合、データの並び方のパターンで実行時間が大きく変わってくる方式が多いから、そういうのを採用すると速いときは速いが遅いときは遅い、しかも並び方のパターンによるから微妙に予測ができない、ということになる。ソートアルゴリズムまで考えたうえでソートが速くなるように描画順を考

    RenderTargetの生成と解放 - mirichiの日記
    rby
    rby 2014/02/25
    rt->array = Qnil; rt->array = rb_ary_new(); 「rb_ary_newは新しいRubyオブジェクトを生成するから、このタイミングでGCが発生する可能性がある。するとarrayはGC内でマークされるものなのにこのタイミングでは値を設定していなくて…」
  • RGenGCに対応する方法 - mirichiの日記

    Ruby2.1.0-preview1は出たがREADME.EXT.jaを見ても書いてないので調べたことをここに書いておく。正式なマニュアルじゃないし検証してるわけでもないから豪快に間違っているかもしれん。 ■はじめに RGenGCは今までの拡張ライブラリのコードそのままで動作するように作られていて、何も考えずにコンパイルすれば普通に動く。2.1用に拡張ライブラリをコンパイルして動かない場合、よっぽど特殊なことをしていない限りはRGenGC以外のところに原因があると考えてよい。そのぐらい互換性に気を使われている。 なので特別に対応する必要は無いのだが、対応すればGCのパフォーマンスが上がるし、Shady化の処理を省く効果もあったりしてさらに速くなるかもしれない。速度を売りにした拡張ライブラリは対応しておいて損は無いだろう。 RGenGCの対応には大きくわけて以下の2つのパターンがある。両方や

    RGenGCに対応する方法 - mirichiの日記
  • 1