skip to main content
10.1145/2542142.2542144acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Characteristics of dynamic JVM languages

Published:28 October 2013Publication History

ABSTRACT

The Java Virtual Machine (JVM) has become an execution platform targeted by many programming languages. However, unlike with Java, a statically-typed language, the performance of the JVM and its Just-In-Time (JIT) compiler with dynamically-typed languages lags behind purpose-built language-specific JIT compilers. In this paper, we aim to contribute to the understanding of the workloads imposed on the JVM by dynamic languages. We use various metrics to characterize the dynamic behavior of a variety of programs written in three dynamic languages (Clojure, Python, and Ruby) executing on the JVM. We identify the differences with respect to Java, and briefly discuss their implications.

References

  1. D. F. Bacon, S. J. Fink, and D. Grove. Space- and time-efficient implementation of the Java object model. In Proc. ECOOP, pages 111--132, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. G. Barany. Static and dynamic method unboxing for Python. In Proc. Software Engineering (Workshops), volume 215 of LNI, pages 43--57. GI, 2013.Google ScholarGoogle Scholar
  3. R. Barik and V. Sarkar. Interprocedural load elimination for dynamic optimization of parallel programs. In Proc. PACT, pages 41--52, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In Proc. OOPSLA, pages 169--190, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. Brunthaler. Inline caching meets quickening. In Proc. ECOOP, pages 429--451, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. J. M. Bull, L. A. Smith, L. Pottage, and R. Freeman. Benchmarking Java against C and Fortran for scientific applications. In Proc. Java Grande, JGI '01, pages 97--105, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. M. Bull, L. A. Smith, M. D. Westhead, D. S. Henty, and R. A. Davey. A methodology for benchmarking Java Grande applications. In Proc. Java Grande, pages 81--88, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Castanos, D. Edelsohn, K. Ishizaki, P. Nagpurkar, T. Nakatani, T. Ogasawara, and P. Wu. On the benefits and pitfalls of extending a statically typed language JIT compiler for dynamic scripting languages. In Proc. OOPSLA, pages 195--212, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. C. Daly, J. Horgan, J. Power, and J. Waldron. Platform independent dynamic Java virtual machine analysis: the Java Grande forum benchmark suite. In Proc. Java Grande, pages 106--115, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Detlefs and O. Agesen. Inlining of virtual methods. In Proc. ECOOP, pages 258--278, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. B. Dufour, K. Driesen, L. Hendren, and C. Verbrugge. Dynamic metrics for Java. In Proc. OOPSLA, pages 149--168, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. R. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, J. Ruderman, E. W. Smith, R. Reitmaier, M. Bebenita, M. Chang, and M. Franz. Trace-based just-in-time type specialization for dynamic languages. In Proc. PLDI, pages 465--478, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. U. Hölzle, C. Chambers, and D. Ungar. Optimizing dynamically-typed object-oriented languages with polymorphic inline caches. In Proc. ECOOP, pages 21--38, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. Hundt. Loop Recognition in C++/Java/Go/Scala. Technical report, Google, 2010.Google ScholarGoogle Scholar
  15. R. Jones and C. Ryder. Garbage collection should be lifetime aware. In Proc. ICOOOLPS, 2006.Google ScholarGoogle Scholar
  16. W. H. Li, J. Singer, and D. White. JVM-Hosted Languages: They talk the talk, but do they walk the walk? In Proc. PPPJ, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. N. Mostafa, C. Krintz, C. Cascaval, D. Edelsohn, P. Nagprurkar, and P. Wu. Understanding the potential of interpreter-based optimizations for Python. Technical report, UCSB, 2010.Google ScholarGoogle Scholar
  18. P. Ratanaworabhan, B. Livshits, and B. G. Zorn. JSMether: comparing the behavior of JavaScript benchmarks with real web applications. In Proc. WebApps, pages 27--38, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. N. P. Ricci, S. Z. Guyer, and J. E. B. Moss. Elephant tracks: generating program traces with object death records. In Proc. PPPJ, pages 139--142. ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. A. Sarimbekov, S. Kell, L. Bulej, A. Sewe, Y. Zheng, D. Ansaloni, and W. Binder. A comprehensive toolchain for workload characterization across JVM languages. In Proc. PASTE, pages 9--16, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. A. Sewe, M. Mezini, A. Sarimbekov, D. Ansaloni, W. Binder, N. Ricci, and S. Z. Guyer. new Scala() instance of Java: a comparison of the memory behaviour of Java and Scala programs. In Proc. ISMM, pages 97--108, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. Sewe, M. Mezini, A. Sarimbekov, and W. Binder. Da Capo con Scala: design and analysis of a Scala benchmark suite for the Java virtual machine. In Proc. OOPSLA, pages 657--676, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. K. Shiv, K. Chow, Y. Wang, and D. Petrochenko. SPECjvm2008 performance characterization. In Proc. SPEC W. on Computer Performance Evaluation and Benchmarking, pages 17--35, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. K. Williams, J. McCandless, and D. Gregg. Dynamic interpretation for dynamic scripting languages. In Proc. CGO, pages 278--287, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. X. Yang, S. M. Blackburn, D. Frampton, J. B. Sartor, and K. S. McKinley. Why nothing matters: the impact of zeroing. In Proc. OOPSLA, pages 307--324, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. A. Yermolovich, C. Wimmer, and M. Franz. Optimization of dynamic languages using hierarchical layering of virtual machines. In Proc. DLS, pages 79--88, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Zaleski, A. D. Brown, and K. Stoodley. YETI: a graduallY Extensible Trace Interpreter. In Proc. VEE, pages 83--93, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Characteristics of dynamic JVM languages

        Recommendations

        Reviews

        David E. Goldfarb

        The Java Virtual Machine (JVM) was designed for Java, a statically typed language. This paper examines the workloads imposed on the JVM by dynamically typed languages, particularly Clojure, Python, and Ruby. Potential optimizations and benchmarking techniques are discussed. The paper is relatively short: 10 pages including one page of bibliography and four pages of figures. While none of the results struck me as very surprising, they do appear rigorous and well studied. Those looking to implement or optimize a dynamically typed language compiling to the JVM may find this paper interesting. Online Computing Reviews Service

        Access critical reviews of Computing literature here

        Become a reviewer for Computing Reviews.

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          VMIL '13: Proceedings of the 7th ACM workshop on Virtual machines and intermediate languages
          October 2013
          48 pages
          ISBN:9781450326018
          DOI:10.1145/2542142

          Copyright © 2013 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 28 October 2013

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          VMIL '13 Paper Acceptance Rate4of4submissions,100%Overall Acceptance Rate4of4submissions,100%

          Upcoming Conference

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader