[pypy-svn] r65700 - pypy/extradoc/talk/icooolps2009-dotnet
antocuni at codespeak.net
antocuni at codespeak.net
Tue Jun 9 18:23:43 CEST 2009
Author: antocuni
Date: Tue Jun 9 18:23:43 2009
New Revision: 65700
Modified:
pypy/extradoc/talk/icooolps2009-dotnet/benchmarks.tex
pypy/extradoc/talk/icooolps2009-dotnet/clibackend.tex
pypy/extradoc/talk/icooolps2009-dotnet/conclusion.tex
pypy/extradoc/talk/icooolps2009-dotnet/paper.tex
Log:
try to incorporate some of the reviewers' comments
Modified: pypy/extradoc/talk/icooolps2009-dotnet/benchmarks.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009-dotnet/benchmarks.tex (original)
+++ pypy/extradoc/talk/icooolps2009-dotnet/benchmarks.tex Tue Jun 9 18:23:43 2009
@@ -49,10 +49,14 @@
been done, so we are actually measuring how good is the code we produced (\emph{JIT 2}).
\end{enumerate}
+The columns \emph{Interp/JIT2} and \emph{JIT2/C\#} measure the speedup of the
+generated code compared to plain interpretation and of the equivalent C\#
+program compared to the generated code, respectively.
+
Moreover, for each benchmark we also show the time taken by running the
equivalent program written in C\#.\footnote{The sources for both TLC and C\#
programs are available at:
- \texttt{http://codespeak.net/~antocuni/tlc-benchmarks/}}
+ \texttt{http://codespeak.net/$\sim$antocuni/tlc-benchmarks/}}
The benchmarks have been run on a machine with an Intel Pentium 4 CPU running at
3.20 GHz and 2 GB of RAM, running Microsoft Windows XP and Microsoft .NET
@@ -135,7 +139,7 @@
than the non-jitted case. Moreover, it often runs at the same speed as the
equivalent program written in C\#, being only 1.5 slower in the worst case.
-The difference in speed it is probably due to both the fact that the current
+The difference in speed is probably due to both the fact that the current
CLI backend emits slightly non-optimal code and that the underyling .NET JIT
compiler is highly optimized to handle bytecode generated by C\# compilers.
Modified: pypy/extradoc/talk/icooolps2009-dotnet/clibackend.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009-dotnet/clibackend.tex (original)
+++ pypy/extradoc/talk/icooolps2009-dotnet/clibackend.tex Tue Jun 9 18:23:43 2009
@@ -83,7 +83,7 @@
solution consists in creating a new method
any time a new case has to be added to a flexswitch.
-It is important to underline the difference between flow graphs and a methods:
+It is important to underline the difference between flow graphs and methods:
the first are the logical unit of code as seen by the JIT compiler, each of
them being concretely implemented by \emph{one or more} methods.
@@ -248,7 +248,7 @@
\subsubsection{Implementation of flexswitches}
-To implement each flexswitch, the CLI backend creates an instace of a subclass
+To implement each flexswitch, the CLI backend creates an instance of a subclass
of \lstinline{BaseLowLevelFlexSwitch}: such an instance stores the mapping
between each value and the corresponding method we want to invoke. Then, the
generated code contains a call to the method \lstinline{execute}, which
Modified: pypy/extradoc/talk/icooolps2009-dotnet/conclusion.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009-dotnet/conclusion.tex (original)
+++ pypy/extradoc/talk/icooolps2009-dotnet/conclusion.tex Tue Jun 9 18:23:43 2009
@@ -5,12 +5,15 @@
Psyco is
a run-time specialiser for Python that uses promotion (called ``unlift'' in
\cite{DBLP:conf/pepm/Rigo04}). However, Psyco is a manually written JIT, is
-not applicable to other languages and cannot be retargetted.
+not applicable to other languages and cannot be retargetted. Psyco is a
+good example of how to implement flexswitches for targets that don't have the
+limitations of the CLI.
The idea of promotion is a generalization of \emph{Polymorphic
Inline Caches} \cite{hoelzle_optimizing_1991}, as well as the idea of using
runtime feedback to produce more efficient code
-\cite{hoelzle_type_feedback_1994}.
+\cite{hoelzle_type_feedback_1994}. The main difference between the two is
+that PICs only works on types, whereas promotion can work on every kind of value.
PyPy-style JIT compilers are hard to write manually, thus we chose to write a
JIT generator. Tracing JIT compilers \cite{gal_hotpathvm_2006} also give
Modified: pypy/extradoc/talk/icooolps2009-dotnet/paper.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009-dotnet/paper.tex (original)
+++ pypy/extradoc/talk/icooolps2009-dotnet/paper.tex Tue Jun 9 18:23:43 2009
@@ -76,7 +76,7 @@
\begin{abstract}
The Common Language Infrastructure (CLI) is a virtual machine expressly
-designed for implementing statically typed languages as C\#, therefore
+designed for implementing statically typed languages such as C\#, therefore
programs written in dynamically typed languages are typically much slower than C\# when executed on .NET.
Recent developments show that \emph{Just In Time} (JIT) compilers can exploit runtime type
More information about the Pypy-commit
mailing list