Mercurial > hg > Members > anatofuz > slides
diff slides/2018/06/05/memo.txt @ 47:32e35be2ce71
auto-Update generated slides by script
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jun 2018 22:41:26 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/slides/2018/06/05/memo.txt Tue Jun 26 22:41:26 2018 +0900 @@ -0,0 +1,56 @@ +MoarVMが実際にインタプリタとして走っているのはMVM_interp_runという関数らしい. +これはスレッド毎に用意されるらしい + +定義自体は `src/core/interp.c`に書かれている + + MVMInstancとかいう構造体に全ての情報が入っている + + MVM_cu_map_from_fileでスレッド情報とファイルから生成した結果をMVMCompUnit構造体として生成している + + DISPATCHでNEXT_OPを判断している,これはオペランドリストとswitch文が同じオーダーで書かれているので + 最適化しやすいらしい + + MVM_interp_runの後DISPATCHというマクロでNEXT_OPというマクロに応じて処理を行っているが + これがMoarVMのバイトコードを一対一対応しているので5000行のcase文が生成されている + + --- + +- Ruby のJITはunreadableなので,とりあえずCbCで実装しても良いのでは +- ()の中にいるなどの情報 +- コンパイラをデーモン化してオブジェクトファイルなどを共通化 +- パースの並列化 + - パースに当てられる箇所 +- gccのパスは50個くらい,その内の1つがパーサーっぽい + +- FileIOを食う例題とFileIOを食わないでCPUを食う例題 + - HTMLジェネレーターとかでも良いのでは + +- Perl5 to Perl6的なのは無い? +- Rustのメモリ管理周り + +- Perl5との互換性? + - JIT + - MoarVM ByteCode + +- 実測する!!! +- Perl5からMoarVMに変換するスクリプトを作成する!? + - JIT + - 並列処理 + - パイプライン処理(コンパイラ) + - 前段の処理を止めないといけない + - 1つのコンパイラがCPUを異常に使うと帰って遅くなるのでは?? +- ローカルな作業を分割しても全体としては遅くなるのでは? +- JIT + +- アプリケーションをCbCで書く +- それが早くなるまでチューニングする + - 最初はコンパイルしちゃって良いのでは? + - いきなりCbCを吐く感じにする +- (いかに早い正規表現を書くか) + +- 作った文だけメモリをallocateして返却しない(linear memory) + - 一旦メモリを保存させて渡す(OBject table, OBlist) + - Copying GC conversation + - incrementalに出来ない為,中途半端にコピーされた状況になる可能性がある + - 1MBのファイルを読み込んで処理するレベルではGCがそんなに走らないので無視しても良いのでは…!? + - GC memory allocate