this is for holding javascript data
Daniele Cono D'Elia edited case-study.tex
over 8 years ago
Commit id: 5a5cf934749c20b51e34dcc54d384cbd82a4a6a8
deletions | additions
diff --git a/case-study.tex b/case-study.tex
index cbb3f9d..e550ea4 100644
--- a/case-study.tex
+++ b/case-study.tex
...
\section{Case Study}
\label{case-study}
MATLAB is a popular dynamic language for scientific and numerical programming. Introduced in the late 1970s mainly as a scripting language for performing computations through efficient libraries, it has evolved over the years into a more complex programming language with support for high-level features such as functions, packages and object orientation. A popular feature of the language is the {\tt feval} construct, a built-in higher-order function that enable the invocation of the function passed as first argument on the
remaining set of subsequent arguments
for of the
feval, {\tt feval} call, and to return the computed
values. result. This feature is heavily used in many classes of numerical computations, such as iterative methods for the approximation of the solutions of ordinary differential equations and simulated annealing heuristics to locate a good approximation to the global optimum of a function in a large search space.
A previous study by Lameed and Hendren~\cite{lameed2013feval} shows that the overhead of an {\tt feval} call is significantly high compared to a direct call, especially in JIT-based execution environments such as McVM and the proprietary MATLAB JIT accelerator by Mathworks. The main reason for this overhead is that the presence of an {\tt feval} instruction can disrupt the results of intra- and inter-procedural level for type and array shape inference analyses, which are a key ingredient for efficient code generation.
Lameed and Hendren thus propose and implement in McVM two dynamic techniques for optimizing feval calls: