  The Python programming language is becoming increasingly popular for
scientific applications due to its simplicity, versatility, and the broad range
of its libraries. A drawback of this dynamic language, however, is its low
runtime performance which limits its applicability for large simulations and
for the analysis of large data sets, as is common in astrophysics and
cosmology. While various frameworks have been developed to address this
limitation, most focus on covering the complete language set, and either force
the user to alter the code or are not able to reach the full speed of an
optimised native compiled language. In order to combine the ease of Python and
the speed of C++, we developed HOPE, a specialised Python just-in-time (JIT)
compiler designed for numerical astrophysical applications. HOPE focuses on a
subset of the language and is able to translate Python code into C++ while
performing numerical optimisation on mathematical expressions at runtime. To
enable the JIT compilation, the user only needs to add a decorator to the
function definition. We assess the performance of HOPE by performing a series
of benchmarks and compare its execution speed with that of plain Python, C++
and the other existing frameworks. We find that HOPE improves the performance
compared to plain Python by a factor of 2 to 120, achieves speeds comparable to
that of C++, and often exceeds the speed of the existing solutions. We discuss
the differences between HOPE and the other frameworks, as well as future
extensions of its capabilities. The fully documented HOPE package is available
at http://hope.phys.ethz.ch and is published under the GPLv3 license on PyPI
and GitHub.
