changeset 74:e6e2f606c68d

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 18 Feb 2019 17:24:39 +0900
parents 47bfecf6ae6b
children 29bb4dca94ea
files paper/chapter5.tex paper/main.pdf
diffstat 2 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter5.tex	Mon Feb 18 17:15:36 2019 +0900
+++ b/paper/chapter5.tex	Mon Feb 18 17:24:39 2019 +0900
@@ -40,7 +40,7 @@
 
 \lstinputlisting[frame=lrbt, label=incre_nqp, caption=インクリメントを繰り返すNQPのサンプルコード]{./codes/incre.nqp}
 
-複数回計測を行った結果を表に示す。
+複数回計測を行った結果を、 それぞれ表\ref{table:cbc}と表\ref{table:cbc_loop}に示す。
 
 \begin{table}[tbp]
     \caption{フィボナッチ数列を求める例題}
@@ -66,8 +66,11 @@
 \end{tabular}
 \end{table}
 
+結果から、 再帰呼び出しを多用しているフィボナッチ数列を求める例題では、 オリジナルのVMより低速なパフォーマンスが得られた。
 CbCMoarVMでは現在モジュール化は行っているが、 具体的な速度上昇に対する実装は行っていない。
-
+その為、 通常のMoarVMより低速になる事を想定していたが、 表\ref{table:cbc_loop}に示すように、 単純ループを求める場合は高速化した。
+これはループ文を利用する際に実行される処理が、 CPUのキャッシュに収まったために高速化したと考えられる。
+この事から、CbCMoarVMでは、 CPUキャッシュに命令を乗せる事が可能であれば、 現在の状況でもMoarVMよりパフォーマンスが向上する利点がある。
 
 \section{Threaded Code}
 
@@ -86,10 +89,7 @@
 
 \lstinputlisting[frame=lrbt, label=cbc_sync, caption=CbCMoarVMのデータ同期]{./codes/sync.c}
 
-また、 CbCコンパイラが一般的に使われておらず、 CbCコンパイラのバグ修正や、 gcc、 llvm/clang のバージョン追従を行っていく必要がある。
-CbCコンパイラは、 末尾再帰(tail call)の強制を行っているが、 MoarVMなどの巨大なプロジェクト上では、 コンパイル時に強制させる際の処理の実装が困難でもある。
-これに伴って、 CodeGearでの不要なスタック操作命令を完全に排除できていない為、 CbCの利点が損なわれている箇所が存在する。
-
+現在CbCコンパイラでは、 CodeGearでの不要なスタック操作命令を完全に排除できていない為、 CbCの利点が損なわれている箇所が存在する。
 CbCからC言語レベルの処理に戻る際は環境付き継続を行う必要があるケースが有り、 この実装を行うためにコードの量や複雑さが高まってしまうとも考えられる。
 
 CbCMoarVMそのものも、 MoarVMの実装に手を加えている為、 MoarVMのアップデートに追従する必要がある。
Binary file paper/main.pdf has changed