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

  • mrubyのkhashとHashの高速化 - mirichiの日記

    mrubyカテゴリあったほうがいいかなーとか思うが、そんなに書くこともないからいらんかも。増えるようなら考える。 khashをどうにかして高速化できないかなーと細かい修正を入れてみて、ついでにHashが遅いらしいので書き込みを高速化してみたのでそれをネタに。 https://github.com/mirichi/mruby/tree/opt_hash khash mrubyのkhash.cは全体がマクロになってて、ちょっとコードを増やすとハッシュテーブルの種類ぶんだけ複製されて増えてしまうのであんまりよろしくないのだが、実行コードが増えるぶんにはROMにでも置いておけばーって感じでたいした問題は無いかもしれないし、あるかもしれない。とりあえず、動的なメモリ確保が増えてなければ問題は比較的軽いほうだろう。 修正したのはハッシュテーブル生成時の処理と、put、resizeの処理。ちょっとずつ無

    mrubyのkhashとHashの高速化 - mirichiの日記
    bamch0h
    bamch0h 2014/05/08
  • mrubyのVMざっくり解説 - mirichiの日記

    なんとなく、mrubyのVMの基的なところを書いておこうと思ったので。誰かの参考になれば。 大きな仕様的なところは、 ・32bit固定長のバイトコードを解釈して動作する。 ・レジスタをスタックに確保するタイプのレジスタマシンである。従って、スタックの任意の位置をレジスタ番号で指定して直接読み書き可能。 ・メソッドやブロックなどの単位でバイトコードがirep構造体にまとめられている。 みたいな感じ。 スタックの使い方 スタックトップがレジスタのR0となり、以下、R1、R2・・・と名前が付けられる。スタックの型はmrb_valueの配列であり、つまりmrubyオブジェクトが詰まっている。irepのコードを呼び出すとき、スタックの上から順に以下のような情報を積んでから呼ばれる。 (引数が2個あった場合の例) R0 |self | R1 |argument1| R2 |argument2| R3

    mrubyのVMざっくり解説 - mirichiの日記
    bamch0h
    bamch0h 2014/04/29
  • 1