Mercurial > hg > Papers > 2020 > koo-thesis
changeset 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 | 06fcc4caf38d |
children | 05eac76e8c24 |
files | Paper/chapter3.tex Paper/main.pdf Slide/Slide.html Slide/Slide.md Slide/Slide.pdf.html |
diffstat | 5 files changed, 76 insertions(+), 113 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/chapter3.tex Sat Feb 15 18:31:14 2020 +0900 +++ b/Paper/chapter3.tex Sat Feb 15 19:33:39 2020 +0900 @@ -41,6 +41,13 @@ \section{NativeCall} Rakuでは Native Call という標準ライブラリを用いて, Cのライブラリを扱うことが可能である. +以下に[\ref{Server}]で使用されているCのライブラリの解説を記す +\begin{itemize} +\item dup(int fd) - dup() は引数で指定したファイルディスクリプタを複製して, 未使用のファイルディスクリプタから最小番号を割り当てます +\item dep2(int newfd, int oldfd) - dup2() は oldfd を newfd に関連づけます. +\item close(int fd) - close() は指定されたfile descreptorを閉じます. +\end{itemize} + \section{通常実行との速度比較} 今回は,提案手法での実行速度と通常実行での実行速度, この二つの速度の比較を行う 題材として行うのはhelloworldを出力するだけのプログラムとフィボナッチ数列の例題である.
--- a/Slide/Slide.html Sat Feb 15 18:31:14 2020 +0900 +++ b/Slide/Slide.html Sat Feb 15 19:33:39 2020 +0900 @@ -93,7 +93,7 @@ <!-- _S9SLIDE_ --> <h2 id="研究背景">研究背景</h2> <ul> - <li>現在開発の進んでいる言語に Perl6(Raku) がある. + <li>現在開発の進んでいる言語に Raku がある. スクリプト言語 Raku は任意の VM が選択できるようになっており, 主に利用されている VM に C で書かれた MoarVM が存在する.</li> <li>MoarVM は JIT コンパイルなどをサポートしているが, 全体的な起動時間及び処理速度が Perl5 や Python , Ruby などの他のスクリプト言語と比較し非常に低速である. その為, 現在日本国内では Raku は実務としてあまり使われていない.</li> @@ -131,66 +131,36 @@ </code></pre> <ul> - <li>比較言語</li> + <li>perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である.</li> </ul> <table style="border-collapse: collapse;" border="1" width="400" height="300"> <tr> <th>Language</th> <th>Version</th> + <th>Time</th> </tr> <tr> <td>raku</td> <td>2019.03.1</td> + <td>249 ms</td> </tr> <tr> <td>perl5</td> <td>v5.18.4</td> + <td>4 ms</td> </tr> <tr> <td>python</td> <td>2.7.10</td> + <td>13 ms</td> </tr> <tr> <td>ruby</td> <td>2.3.7p456</td> + <td>83 ms</td> </tr> </table> - - - -</div> - -<div class='slide'> - <!-- _S9SLIDE_ --> -<h2 id="raku-と他言語の起動時間の比較-1">Raku と他言語の起動時間の比較</h2> -<ul> - <li>perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である.</li> -</ul> - -<table style="border-collapse: collapse;" border="1" width="400" height="300"> - <tr> - <th>Language</th> - <th>Time</th> - </tr> - <tr> - <td>raku</td> - <td>0.249 sec</td> - </tr> - <tr> - <td>perl5</td> - <td>0.004 sec</td> - </tr> - <tr> - <td>python</td> - <td>0.013 sec</td> - </tr> - <tr> - <td>ruby</td> - <td>0.083 sec</td> - </tr> -</table> - -<p>Raku は 最も早いperl5 の約62.25倍, pythonの約19倍, rubyの約3倍起動速度が遅いことがわかる.</p> +<p>Raku は最も早い perl5 の約62.25倍, python の約19倍, ruby の約3倍起動速度が遅いことがわかる.</p> @@ -201,9 +171,6 @@ <h2 id="rakudo">Rakudo</h2> <ul> <li>Rakudoとは現在のRakuの主力な実装である.(Raku は言語名, Rakudo はコンパイラ)</li> - <ul> - <li>Raku は仕様と実装が明確に区分されており, Rakudoは実装, roast という Raku の仕様(テストスイートがある)</li> - </ul> <li>Rakudo は MoarVM, と NQP と呼ばれる Raku のサブセット, NQP と Raku 自身で記述された Raku という構成である.</li> <li>Rakudo は MoarVMの他に JVM やJava Script を動作環境として選択可能である.</li> </ul> @@ -228,6 +195,10 @@ </ul> + +</div> + +<div class='slide'> <!-- _S9SLIDE_ --> <h2 id="moarvm">MoarVM</h2> <ul> @@ -248,11 +219,16 @@ <li>現在有力な処理系である Rakudo から名前を取り Raku という別名がつけられた.</li> </ul> + + +</div> + +<div class='slide'> <!-- _S9SLIDE_ --> <h2 id="rakudoの語源">Rakudoの語源</h2> <ul> <li>ちなみに Rakudo の語源は, 楽土と駱駝道で</li> - <li>楽土の方は日本語で「楽園」という意味で</li> + <li>楽土の方はLallyが楽に言語を作りたいという意味で Rakudo</li> <li>駱駝道の方は Perlのマスコットキャラクターが🐪だったからです <ul> <li>http://blogs.perl.org/users/zoffix_znet/2017/07/the-hot-new-language-named-rakudo.html</li> @@ -336,6 +312,11 @@ <li>題材として行うのはhelloworldを出力するだけのプログラムとフィボナッチ数列の例題である.</li> </ul> + + +</div> + +<div class='slide'> <!-- _S9SLIDE_ --> <h2 id="予測">予測</h2> <ul> @@ -387,8 +368,7 @@ <li>0.0415 sec</li> </ul> </li> - <li>先ほどと同様, 提案手法は通常実行に比べて早い結果となり, 約5倍早い実行結果になった</li> - <li>内部で処理が走っている時間だけ差が縮まったと考えられる</li> + <li>先ほどと同様,提案手法は通常実行に比べて早い結果となり,約5倍早い実行結果になった</li> </ul> @@ -431,7 +411,7 @@ <!-- _S9SLIDE_ --> <h2 id="abyss-client側の実装">Abyss Client側の実装</h2> <ul> - <li>ユーザーは Abyss Server を起動後, ファイルパスをサーバーに送信する.</li> + <li>ユーザーは Abyss Server を起動後,ファイルパスをサーバーに送信する.</li> </ul> <pre><code>use IO::Socket::Unix; @@ -491,7 +471,11 @@ <ul> <li>現在 Abyss Server には 一度スクリプトを実行した後にサーバー内の環境をリセットする機能が存在しないため,スクリプトがサーバー内の環境に影響を及ぼした場合,通常実行と違う挙動をする危険性がある</li> <li>Raku に eval の出力を socket に切り替える機能が存在しないので出力が Server 側に返ってしまい,ユーザー側に返ってこない</li> - <li>同時に二つ以上のタスクを与えられると実行順のスケジューリングができない</li> + <li>同時に二つ以上のタスクを与えられると実行順のスケジューリングができない + <ul> + <li>与えられた順番に処理していく</li> + </ul> + </li> <li>異常に長いタスクが投げられた場合, 次のタスクが前のタスクが終わるまで実行ができない</li> <li>起動時のオプションが選択出来ない</li> </ul> @@ -507,12 +491,35 @@ <li>Raku の新たな実行方法の提案,及び実装を行なった.</li> <li>Raku にUnix domain socket の実装を行なった.</li> <li>Raku の速度改善において, 同一ホスト内でサーバープロセスを生成し,サーバープロセス内であらかじめコンパイラを立ち上げて起き, 実行するファイル名を転送し,サーバープロセス上でコンパイルを行う手法は有効であると考えられる</li> - <li>今後は一度投げられたスクリプトをキャッシュで保存しておき,再度実行する際に,そのキャッシュを用いてコンパイル時間を省くような仕組みを実装する予定です</li> + <li>今後は一度投げられたスクリプトをキャッシュで保存しておき,再度実行する際に,そのキャッシュを用いてコンパイル時間を省くような仕組みを入れて開発を進めたいです.</li> </ul> </div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="raku-の実装に関わる様々な言語">Raku の実装に関わる様々な言語</h2> +<ul> + <li>Raku は, Larry wall により設計されたオブジェクト指向スクリプト言語である.</li> + <li>また Raku は漸進的型付け言語である.</li> +</ul> + +<p><img src="fig/Raku.svg" alt="" /></p> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="rakuの導入">Rakuの導入</h2> + + +</div> + + </div><!-- presentation --> </body> </html>
--- a/Slide/Slide.md Sat Feb 15 18:31:14 2020 +0900 +++ b/Slide/Slide.md Sat Feb 15 19:33:39 2020 +0900 @@ -9,6 +9,7 @@ その為, 現在日本国内では Raku は実務としてあまり使われていない. - Raku の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される. + ## 研究概要 - Raku の実装の一つであるRakudoは、Byte code である MoarVM と、それ上で動作する Raku のsubsetであるnqp (Not Quite Perl)上に構成されている。 - 現状のRakuの実行はRakuで記述されたコンパイラをloadしてJITしながら実行すること自体に時間がかかっている。 @@ -24,57 +25,35 @@ プロセッサ2.7GHz Intel Core i5 ``` -- 比較言語 +- perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である. <table style="border-collapse: collapse;" border="1" width="400" height="300"> <tr> <th>Language</th> <th>Version</th> + <th>Time</th> </tr> <tr> <td>raku</td> <td>2019.03.1</td> + <td>249 ms</td> </tr> <tr> <td>perl5</td> <td>v5.18.4</td> + <td>4 ms</td> </tr> <tr> <td>python</td> <td>2.7.10</td> + <td>13 ms</td> </tr> <tr> <td>ruby</td> <td>2.3.7p456</td> + <td>83 ms</td> </tr> </table> - -## Raku と他言語の起動時間の比較 -- perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である. - -<table style="border-collapse: collapse;" border="1" width="400" height="300"> - <tr> - <th>Language</th> - <th>Time</th> - </tr> - <tr> - <td>raku</td> - <td>0.249 sec</td> - </tr> - <tr> - <td>perl5</td> - <td>0.004 sec</td> - </tr> - <tr> - <td>python</td> - <td>0.013 sec</td> - </tr> - <tr> - <td>ruby</td> - <td>0.083 sec</td> - </tr> -</table> - -Raku は 最も早いperl5 の約62.25倍, pythonの約19倍, rubyの約3倍起動速度が遅いことがわかる. +Raku は最も早い perl5 の約62.25倍, python の約19倍, ruby の約3倍起動速度が遅いことがわかる. ## Rakudo - Rakudoとは現在のRakuの主力な実装である.(Raku は言語名, Rakudo はコンパイラ)
--- a/Slide/Slide.pdf.html Sat Feb 15 18:31:14 2020 +0900 +++ b/Slide/Slide.pdf.html Sat Feb 15 19:33:39 2020 +0900 @@ -115,66 +115,36 @@ </code></pre> <ul> - <li>比較言語</li> + <li>perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である.</li> </ul> <table style="border-collapse: collapse;" border="1" width="400" height="300"> <tr> <th>Language</th> <th>Version</th> + <th>Time</th> </tr> <tr> <td>raku</td> <td>2019.03.1</td> + <td>249 ms</td> </tr> <tr> <td>perl5</td> <td>v5.18.4</td> + <td>4 ms</td> </tr> <tr> <td>python</td> <td>2.7.10</td> + <td>13 ms</td> </tr> <tr> <td>ruby</td> <td>2.3.7p456</td> + <td>83 ms</td> </tr> </table> - - - -</div> - -<div class='slide'> - <!-- _S9SLIDE_ --> -<h2 id="raku-と他言語の起動時間の比較-1">Raku と他言語の起動時間の比較</h2> -<ul> - <li>perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である.</li> -</ul> - -<table style="border-collapse: collapse;" border="1" width="400" height="300"> - <tr> - <th>Language</th> - <th>Time</th> - </tr> - <tr> - <td>raku</td> - <td>0.249 sec</td> - </tr> - <tr> - <td>perl5</td> - <td>0.004 sec</td> - </tr> - <tr> - <td>python</td> - <td>0.013 sec</td> - </tr> - <tr> - <td>ruby</td> - <td>0.083 sec</td> - </tr> -</table> - -<p>Raku は 最も早いperl5 の約62.25倍, pythonの約19倍, rubyの約3倍起動速度が遅いことがわかる.</p> +<p>Raku は最も早い perl5 の約62.25倍, python の約19倍, ruby の約3倍起動速度が遅いことがわかる.</p>