comparison Paper/anatofuz.tex @ 43:f4d4cbf62aea

add detail
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 09 Nov 2018 15:23:15 +0900
parents 1abd6fc0abe8
children 571f6ffcccf8
comparison
equal deleted inserted replaced
42:1abd6fc0abe8 43:f4d4cbf62aea
227 \subsection{現在のPerl6} 227 \subsection{現在のPerl6}
228 Perl6の言語仕様\cite{perl6design}とその時点での実装状況を纏めた公式ドキュメント\cite{perl6doc}は分離している. 228 Perl6の言語仕様\cite{perl6design}とその時点での実装状況を纏めた公式ドキュメント\cite{perl6doc}は分離している.
229 従来は言語仕様は自然言語の仕様書であったが,現在はテストスイートである「Roast\cite{roast}」そのものと定義されている. 229 従来は言語仕様は自然言語の仕様書であったが,現在はテストスイートである「Roast\cite{roast}」そのものと定義されている.
230 現在のPerl6の仕様を読む場合Roastを確認し,現在rakudo上に実装されている機能を見る場合は公式ドキュメントを確認する必要がある. 230 現在のPerl6の仕様を読む場合Roastを確認し,現在rakudo上に実装されている機能を見る場合は公式ドキュメントを確認する必要がある.
231 231
232 \subsection{処理速度}
233 現在のPerl6が他のプログラミング言語と比較した場合どのような違いがでるのか計測した.
234 mac osの/var/log/system.logファイルから正規表現でログ中のプログラムが書き込んだ回数を個別に数え上げるというものである.
235 今回はファイルを231Kと3GBの二種類用意し,どの様な違いが出るのか測定した.
236
237 測定した環境は次の通りである.
238
239 \begin{itemize}
240 \item Perl6 (MoarVM) ver.2018.04.01
241 \item Perl6 (JVM) 2018.06-163-g612d071b8 built on JVM
242 \item Python 3.6.5
243 \item Java 10
244 \item Perl5
245 \end{itemize}
246
247 測定した結果を以下に示す.測定結果の単位は秒である.
248
249 \begin{table}[htb]
250 \begin{tabular}{|l|c|c|c|c|c|} \hline
251 FileSize & MoarVM & Perl6 on JVM & Python3 & Java & Perl5\\ \hline
252 231K & 0.86 & 21.48 & 0.06 & 0.27 & 0.04 \\
253 3G & 2331.08 & 1665.56 & 101.16 & 48.85 & 41.35\\ \hline
254 \end{tabular}
255 \end{table}
256
257 計測結果からファイルサイズが小さい場合はMoarVMよりJVMに乗せたPerl6が低速であるが,ファイルサイズが大きい場合はJavaのJITが働くためMoarVMより高速に動いていると推測できる.
258
259 %# 計測(3GB)
260
261 %* Perl5c
262 % * 41.35s
263 %* Ruby
264 % * 574.52s
265 %* Python
266 % * 101.16s
267 %* Java
268 % * 48.85s
269 %* Perl6(Moar)
270 % * 2331.08s
271 %* Perl6(JVM)
272 % * 1665.56s
273
274 %# 参考(231K)
275
276 %* Perl5
277 % * 0.04s
278 %* Ruby
279 % * 0.15s
280 %* Python
281 % * 0.06s
282 %* Java
283 % * 0.27s
284 %* Perl6(Moar)
285 % * 0.86s
286 %* Perl6(JVM)
287 % * 21.48s
288
232 289
233 \section{CbCによるMoarVM} 290 \section{CbCによるMoarVM}
234 この章では改良を行ったPerl6処理系であるMoarVMについて述べる. 291 この章では改良を行ったPerl6処理系であるMoarVMについて述べる.
235 今回改良を行ったMoarVMは2018.04.01,nqpは2018.04-3-g45ab6e3バージョンで行っている. 292 今回改良を行ったMoarVMは2018.04.01,nqpは2018.04-3-g45ab6e3バージョンで行っている.
236 \subsection{方針} 293 \subsection{方針}