# HG changeset patch # User e165727 # Date 1581762819 -32400 # Node ID e2d2da777af0aeb4826072065784efa7941d5f23 # Parent 06fcc4caf38dbbc739cc38be2aef02976946a075 update Slide & add NativeCall section diff -r 06fcc4caf38d -r e2d2da777af0 Paper/chapter3.tex --- 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を出力するだけのプログラムとフィボナッチ数列の例題である. diff -r 06fcc4caf38d -r e2d2da777af0 Paper/main.pdf Binary file Paper/main.pdf has changed diff -r 06fcc4caf38d -r e2d2da777af0 Slide/Slide.html --- 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 @@

研究背景

+ + + +

MoarVM

+ + +
+ +

Rakudoの語源

+ +

予測

-
  • 先ほどと同様, 提案手法は通常実行に比べて早い結果となり, 約5倍早い実行結果になった
  • -
  • 内部で処理が走っている時間だけ差が縮まったと考えられる
  • +
  • 先ほどと同様,提案手法は通常実行に比べて早い結果となり,約5倍早い実行結果になった
  • @@ -431,7 +411,7 @@

    Abyss Client側の実装

    use IO::Socket::Unix;
    @@ -491,7 +471,11 @@
     
    • 現在 Abyss Server には 一度スクリプトを実行した後にサーバー内の環境をリセットする機能が存在しないため,スクリプトがサーバー内の環境に影響を及ぼした場合,通常実行と違う挙動をする危険性がある
    • Raku に eval の出力を socket に切り替える機能が存在しないので出力が Server 側に返ってしまい,ユーザー側に返ってこない
    • -
    • 同時に二つ以上のタスクを与えられると実行順のスケジューリングができない
    • +
    • 同時に二つ以上のタスクを与えられると実行順のスケジューリングができない +
        +
      • 与えられた順番に処理していく
      • +
      +
    • 異常に長いタスクが投げられた場合, 次のタスクが前のタスクが終わるまで実行ができない
    • 起動時のオプションが選択出来ない
    @@ -507,12 +491,35 @@
  • Raku の新たな実行方法の提案,及び実装を行なった.
  • Raku にUnix domain socket の実装を行なった.
  • Raku の速度改善において, 同一ホスト内でサーバープロセスを生成し,サーバープロセス内であらかじめコンパイラを立ち上げて起き, 実行するファイル名を転送し,サーバープロセス上でコンパイルを行う手法は有効であると考えられる
  • -
  • 今後は一度投げられたスクリプトをキャッシュで保存しておき,再度実行する際に,そのキャッシュを用いてコンパイル時間を省くような仕組みを実装する予定です
  • +
  • 今後は一度投げられたスクリプトをキャッシュで保存しておき,再度実行する際に,そのキャッシュを用いてコンパイル時間を省くような仕組みを入れて開発を進めたいです.
  • + +
    + +

    Raku の実装に関わる様々な言語

    +
      +
    • Raku は, Larry wall により設計されたオブジェクト指向スクリプト言語である.
    • +
    • また Raku は漸進的型付け言語である.
    • +
    + +

    + + + +
    + +
    + +

    Rakuの導入

    + + +
    + + diff -r 06fcc4caf38d -r e2d2da777af0 Slide/Slide.md --- 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を出力するプログラムを用いて行なった実行結果である. + + + + +
    Language VersionTime
    raku 2019.03.1249 ms
    perl5 v5.18.44 ms
    python 2.7.1013 ms
    ruby 2.3.7p45683 ms
    - -## Raku と他言語の起動時間の比較 -- perl5,ruby,raku,pythonでhelloworldを出力するプログラムを用いて行なった実行結果である. - - - - - - - - - - - - - - - - - - - - - - -
    LanguageTime
    raku0.249 sec
    perl50.004 sec
    python0.013 sec
    ruby0.083 sec
    - -Raku は 最も早いperl5 の約62.25倍, pythonの約19倍, rubyの約3倍起動速度が遅いことがわかる. +Raku は最も早い perl5 の約62.25倍, python の約19倍, ruby の約3倍起動速度が遅いことがわかる. ## Rakudo - Rakudoとは現在のRakuの主力な実装である.(Raku は言語名, Rakudo はコンパイラ) diff -r 06fcc4caf38d -r e2d2da777af0 Slide/Slide.pdf.html --- 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 @@
    + + + + +
    Language VersionTime
    raku 2019.03.1249 ms
    perl5 v5.18.44 ms
    python 2.7.1013 ms
    ruby 2.3.7p45683 ms
    - - - - - -
    - -

    Raku と他言語の起動時間の比較

    - - - - - - - - - - - - - - - - - - - - - - - -
    LanguageTime
    raku0.249 sec
    perl50.004 sec
    python0.013 sec
    ruby0.083 sec
    - -

    Raku は 最も早いperl5 の約62.25倍, pythonの約19倍, rubyの約3倍起動速度が遅いことがわかる.

    +

    Raku は最も早い perl5 の約62.25倍, python の約19倍, ruby の約3倍起動速度が遅いことがわかる.