Mercurial > hg > Papers > 2019 > anatofuz-thesis
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のアップデートに追従する必要がある。