Mercurial > hg > Papers > 2020 > koo-thesis
view Paper/chapter4.tex @ 22:b96b3244307b
update paper & slide
author | e165727 <e165727@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 16 Feb 2020 18:20:36 +0900 |
parents | 05eac76e8c24 |
children | 58dd8e127e4b |
line wrap: on
line source
\chapter{Abyss Server の性能評価} \section{比較} \begin{itemize} \item{Microsoft CLR}\\ .NET Framework には, 共通言語ランタイム(Common Language Runtime)と呼ばれるランタイム環境がある. .NET対応のソフトウェアは, 様々なプログラミング言語で書かれたソースコードから, いったん共通中間言語 (Common Intermediate Language)による形式に変換されて利用者のもとに配布される. CIL 形式のプログラムを解釈し, コンピュータが直に実行可能な機械語によるプログラムに変換して実行するソフトウェアが CLR である. 現状の Abyss サーバーはプロセスとして立ち上げているが, CLR は OS に直接組み込む必要があるが, Abyss サーバーはプロセス上で実行しているため OS に手を加えず実装が容易である. \\ \item{FastCGI}\\ FastCGI とは CGI を改良したものである. 通常のCGIは, ユーザーから要求があるたびにプロセスを生成しプログラムを実行し,プロセスを破棄する. FastCGIでは一度プログラムが起動し, ロードされるとメモリ上にしばらく残り, 次回実行される際にそのプログラムを再利用する. \\ FastCGI は Abyss Server とよく似ているが, FastCGI と Abyss Server の違いは. FastCGI は HTTPリクエストが起動のトリガーになっており, Abyss Server はユーザーが実行したいプログラムを送信することが起動のトリガーになっていることである \item{PyPy}\\ PyPy は Python の 実装の一つであり, Cpython のサブセットである RPython で記述された 処理系である. PyPy は JIT コンパイル を採用しており, 実行時にコードを機械語にコンパイルして効率的に実行させることができる. PyPy は Cpython より実行速度が速いが起動速度は Cpython と比較して約3倍遅い. Raku と同様, PyPyは Cpython と比較して起動時間が遅いため今回提案した手法を応用できると予測できる. \\ \end{itemize} \section{Abyss Server の利点} \begin{itemize} \item Abyss Serverを用いて実行することで, サーバー上で事前に起動した Rakudo を再利用し, 投げられた Raku スクリプトの実行を行うため, Rakudo の起動時間を短縮できる. \item 一度投げられたスクリプトのバイトコード, もしくは計算結果をキャッシュで保存しておき, 再度実行する際に, そのキャッシュを用いてコンパイル時間を省くような仕組みを入れやすいと考えられる. \item 他の起動時間遅いスクリプト言語や, モジュールの読み込みが遅い言語などにも, 応用しやすいと考えられる. \item 普通のスクリプト言語だと実行するたびにforkして実行しインタプリタの立ち上げという処理になるが, プロセス毎回起動しなくて済む \end{itemize} \section{Abyss Server の欠点} \begin{itemize} \item 現在 Abyss Server には 一度スクリプトを実行した後にサーバー内の環境をリセットする機能が存在しないため,スクリプトがサーバー内の環境に影響を及ぼした場合,通常実行と違う挙動をする危険性がある \item 同時に二つ以上のタスクを与えられると実行順のスケジューリングができない \item 異常に長いタスクが投げられた場合, 次のタスクが前のタスクが終わるまで実行ができない \item 起動時のオプションが選択出来ない \item Client側を Raku で書いてしまうとファイルパスを送信する際に Raku を起動することになるので, 起動時間が通常実行よりかかってしまう \end{itemize}