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