Statistically Significant Comparative Performance Testing of Julia and Fortran Languages in Case of Runge–Kutta Methods

  • Migran N. Gevorkyan
  • Anna V. Korolkova
  • Dmitry S. KulyabovEmail author
  • Konstantin P. Lovetskiy
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11189)


In this paper we compare the performance of classical Runge–Kutta methods implemented in Fortran and Julia languages. We use the technique described in technical report by Tomas Kalibera and Richard E. Jones from University of Kent. This technique allows to solve the following problems. 1. The determination of the number of runs required by the program to pass the warm-up stage (e.g. JIT-compilation, memory buffers filling). 2. The determination of the optimal number of levels of the experiment and the number of repetitions at each level for robust testing. 3. The construction of the confidence interval for the resulting average run time. For the numerical experiment we implement 6-th order classical Runge–Kutta methods in both languages in the most similar way. We also study unvectorized versions of our functions. For Julia we tested not only built-in vectorization capabilities, but also external library. For processing the results of measurements Python 3 with Matplotlib, NumPy and SciPy (stats module) were used. We carried out experiments for variety of ODE dimensions (from 2 to 64) and different types of processors. Our work may be interesting not only for the results of comparison of the new Julia language with Fortran, but also for the robust testing method demonstration.


Runge–Kutta scheme Julia language Fortran language Performance 


  1. 1.
    Rigorous Benchmarking in Reasonable Time. ACM, New York, June 2013Google Scholar
  2. 2.
    Gnu fortran (2018).
  3. 3.
    Matplotlib home site (2018).
  4. 4.
    Numpy home site (2018).
  5. 5.
    Python home site (2018).
  6. 6.
    Bezanson, J., Edelman, A., Karpinski, S., Shah, V.B.: Julia: A fresh approach to numerical computing. SIAM Rev. 59(1), 65–98 (2017). Scholar
  7. 7.
    Bezanson, J., Karpinski, S., Shah, V.B., Edelman, A.: Julia: A Fast Dynamic Language for Technical Computing, September 2012Google Scholar
  8. 8.
    Brainerd, W.S.: Guide to Fortran 2008 Programming. Springer, London (2015). Scholar
  9. 9.
    Butcher, J.: Numerical Methods for Ordinary Differential Equations, 2nd edn. Wiley, New Zealand (2003)CrossRefGoogle Scholar
  10. 10.
    Chapman, S.J.: Fortran for Scientists and Engineers. McGraw-Hill Education, New York (2018)Google Scholar
  11. 11.
    Gevorkyan, M.N., Velieva, T.R., Korolkova, A.V., Kulyabov, D.S., Sevastyanov, L.A.: Stochastic Runge–Kutta software package for stochastic differential equations. In: Zamojski, W., Mazurkiewicz, J., Sugier, J., Walkowiak, T., Kacprzyk, J. (eds.) Dependability Engineering and Complex Systems. AISC, vol. 470, pp. 169–179. Springer, Cham (2016). Scholar
  12. 12.
    Hairer, E., Nørsett, S.P., Wanner, G.: Solving Ordinary Differential Equations I, 2nd edn. Springer, Heidelberg (2008). Scholar
  13. 13.
    Hanson, R.J., Hopkins, T.: Numerical Computing With Modern Fortran. SIAM, Philadelphia (2013)zbMATHGoogle Scholar
  14. 14.
    Jones, E., Oliphant, T., Peterson, P., et al.: SciPy: Open source scientific tools for Python (2001).
  15. 15.
    Kalibera, T., Jones, R.E.: Quantifying Performance Changes with Effect Size Confidence Intervals. Technical report 4–12, University of Kent, June 2012Google Scholar
  16. 16.
    Rossum, G.: Python reference manual. Technical report, Amsterdam, The Netherlands (1995)Google Scholar

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  1. 1.Department of Applied Probability and InformaticsPeoples’ Friendship University of Russia (RUDN University)MoscowRussian Federation
  2. 2.Laboratory of Information TechnologiesJoint Institute for Nuclear ResearchDubna, Moscow regionRussian Federation

Personalised recommendations