comparison Slide/Slide.md @ 15:e2d2da777af0

update Slide & add NativeCall section
author e165727 <e165727@ie.u-ryukyu.ac.jp>
date Sat, 15 Feb 2020 19:33:39 +0900
parents d38af6a6aece
children 05eac76e8c24
comparison
equal deleted inserted replaced
14:06fcc4caf38d 15:e2d2da777af0
7 スクリプト言語 Raku は任意の VM が選択できるようになっており, 主に利用されている VM に C で書かれた MoarVM が存在する. 7 スクリプト言語 Raku は任意の VM が選択できるようになっており, 主に利用されている VM に C で書かれた MoarVM が存在する.
8 - MoarVM は JIT コンパイルなどをサポートしているが, 全体的な起動時間及び処理速度が Perl5 や Python , Ruby などの他のスクリプト言語と比較し非常に低速である. 8 - MoarVM は JIT コンパイルなどをサポートしているが, 全体的な起動時間及び処理速度が Perl5 や Python , Ruby などの他のスクリプト言語と比較し非常に低速である.
9 その為, 現在日本国内では Raku は実務としてあまり使われていない. 9 その為, 現在日本国内では Raku は実務としてあまり使われていない.
10 - Raku の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される. 10 - Raku の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される.
11 11
12
12 ## 研究概要 13 ## 研究概要
13 - Raku の実装の一つであるRakudoは、Byte code である MoarVM と、それ上で動作する Raku のsubsetであるnqp (Not Quite Perl)上に構成されている。 14 - Raku の実装の一つであるRakudoは、Byte code である MoarVM と、それ上で動作する Raku のsubsetであるnqp (Not Quite Perl)上に構成されている。
14 - 現状のRakuの実行はRakuで記述されたコンパイラをloadしてJITしながら実行すること自体に時間がかかっている。 15 - 現状のRakuの実行はRakuで記述されたコンパイラをloadしてJITしながら実行すること自体に時間がかかっている。
15 - そこで, 同一ホスト内で終了せずに実行を続けるサーバープロセスを立ち上げ, このサーバープロセス上で立ち上げておいたコンパイラに実行するファイル名を転送し, サーバー上でコンパイルを行う手法を提案し実装する. 16 - そこで, 同一ホスト内で終了せずに実行を続けるサーバープロセスを立ち上げ, このサーバープロセス上で立ち上げておいたコンパイラに実行するファイル名を転送し, サーバー上でコンパイルを行う手法を提案し実装する.
16 17
22 macOS Mojave version 10.14.5 23 macOS Mojave version 10.14.5
23 メモリ8GB 24 メモリ8GB
24 プロセッサ2.7GHz Intel Core i5 25 プロセッサ2.7GHz Intel Core i5
25 ``` 26 ```
26 27
27 - 比較言語 28 - perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である.
28 <table style="border-collapse: collapse;" border="1" width="400" height="300"> 29 <table style="border-collapse: collapse;" border="1" width="400" height="300">
29 <tr> 30 <tr>
30 <th>Language</th> 31 <th>Language</th>
31 <th>Version</th> 32 <th>Version</th>
33 <th>Time</th>
32 </tr> 34 </tr>
33 <tr> 35 <tr>
34 <td>raku</td> 36 <td>raku</td>
35 <td>2019.03.1</td> 37 <td>2019.03.1</td>
38 <td>249 ms</td>
36 </tr> 39 </tr>
37 <tr> 40 <tr>
38 <td>perl5</td> 41 <td>perl5</td>
39 <td>v5.18.4</td> 42 <td>v5.18.4</td>
43 <td>4 ms</td>
40 </tr> 44 </tr>
41 <tr> 45 <tr>
42 <td>python</td> 46 <td>python</td>
43 <td>2.7.10</td> 47 <td>2.7.10</td>
48 <td>13 ms</td>
44 </tr> 49 </tr>
45 <tr> 50 <tr>
46 <td>ruby</td> 51 <td>ruby</td>
47 <td>2.3.7p456</td> 52 <td>2.3.7p456</td>
53 <td>83 ms</td>
48 </tr> 54 </tr>
49 </table> 55 </table>
50 56 Raku は最も早い perl5 の約62.25倍, python の約19倍, ruby の約3倍起動速度が遅いことがわかる.
51 ## Raku と他言語の起動時間の比較
52 - perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である.
53
54 <table style="border-collapse: collapse;" border="1" width="400" height="300">
55 <tr>
56 <th>Language</th>
57 <th>Time</th>
58 </tr>
59 <tr>
60 <td>raku</td>
61 <td>0.249 sec</td>
62 </tr>
63 <tr>
64 <td>perl5</td>
65 <td>0.004 sec</td>
66 </tr>
67 <tr>
68 <td>python</td>
69 <td>0.013 sec</td>
70 </tr>
71 <tr>
72 <td>ruby</td>
73 <td>0.083 sec</td>
74 </tr>
75 </table>
76
77 Raku は 最も早いperl5 の約62.25倍, pythonの約19倍, rubyの約3倍起動速度が遅いことがわかる.
78 57
79 ## Rakudo 58 ## Rakudo
80 - Rakudoとは現在のRakuの主力な実装である.(Raku は言語名, Rakudo はコンパイラ) 59 - Rakudoとは現在のRakuの主力な実装である.(Raku は言語名, Rakudo はコンパイラ)
81 - Rakudo は MoarVM, と NQP と呼ばれる Raku のサブセット, NQP と Raku 自身で記述された Raku という構成である. 60 - Rakudo は MoarVM, と NQP と呼ばれる Raku のサブセット, NQP と Raku 自身で記述された Raku という構成である.
82 - Rakudo は MoarVMの他に JVM やJava Script を動作環境として選択可能である. 61 - Rakudo は MoarVMの他に JVM やJava Script を動作環境として選択可能である.