comparison 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
comparison
equal deleted inserted replaced
46:8972d59ad904 47:32e35be2ce71
1 MoarVMが実際にインタプリタとして走っているのはMVM_interp_runという関数らしい.
2 これはスレッド毎に用意されるらしい
3
4 定義自体は `src/core/interp.c`に書かれている
5
6 MVMInstancとかいう構造体に全ての情報が入っている
7
8 MVM_cu_map_from_fileでスレッド情報とファイルから生成した結果をMVMCompUnit構造体として生成している
9
10 DISPATCHでNEXT_OPを判断している,これはオペランドリストとswitch文が同じオーダーで書かれているので
11 最適化しやすいらしい
12
13 MVM_interp_runの後DISPATCHというマクロでNEXT_OPというマクロに応じて処理を行っているが
14 これがMoarVMのバイトコードを一対一対応しているので5000行のcase文が生成されている
15
16 ---
17
18 - Ruby のJITはunreadableなので,とりあえずCbCで実装しても良いのでは
19 - ()の中にいるなどの情報
20 - コンパイラをデーモン化してオブジェクトファイルなどを共通化
21 - パースの並列化
22 - パースに当てられる箇所
23 - gccのパスは50個くらい,その内の1つがパーサーっぽい
24
25 - FileIOを食う例題とFileIOを食わないでCPUを食う例題
26 - HTMLジェネレーターとかでも良いのでは
27
28 - Perl5 to Perl6的なのは無い?
29 - Rustのメモリ管理周り
30
31 - Perl5との互換性?
32 - JIT
33 - MoarVM ByteCode
34
35 - 実測する!!!
36 - Perl5からMoarVMに変換するスクリプトを作成する!?
37 - JIT
38 - 並列処理
39 - パイプライン処理(コンパイラ)
40 - 前段の処理を止めないといけない
41 - 1つのコンパイラがCPUを異常に使うと帰って遅くなるのでは??
42 - ローカルな作業を分割しても全体としては遅くなるのでは?
43 - JIT
44
45 - アプリケーションをCbCで書く
46 - それが早くなるまでチューニングする
47 - 最初はコンパイルしちゃって良いのでは?
48 - いきなりCbCを吐く感じにする
49 - (いかに早い正規表現を書くか)
50
51 - 作った文だけメモリをallocateして返却しない(linear memory)
52 - 一旦メモリを保存させて渡す(OBject table, OBlist)
53 - Copying GC conversation
54 - incrementalに出来ない為,中途半端にコピーされた状況になる可能性がある
55 - 1MBのファイルを読み込んで処理するレベルではGCがそんなに走らないので無視しても良いのでは…!?
56 - GC memory allocate