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.
- 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 ScholarDigital Library
- G. Barany. Static and dynamic method unboxing for Python. In Proc. Software Engineering (Workshops), volume 215 of LNI, pages 43--57. GI, 2013.Google Scholar
- R. Barik and V. Sarkar. Interprocedural load elimination for dynamic optimization of parallel programs. In Proc. PACT, pages 41--52, 2009. Google ScholarDigital Library
- 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 ScholarDigital Library
- S. Brunthaler. Inline caching meets quickening. In Proc. ECOOP, pages 429--451, 2010. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- D. Detlefs and O. Agesen. Inlining of virtual methods. In Proc. ECOOP, pages 258--278, 1999. Google ScholarDigital Library
- B. Dufour, K. Driesen, L. Hendren, and C. Verbrugge. Dynamic metrics for Java. In Proc. OOPSLA, pages 149--168, 2003. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- R. Hundt. Loop Recognition in C++/Java/Go/Scala. Technical report, Google, 2010.Google Scholar
- R. Jones and C. Ryder. Garbage collection should be lifetime aware. In Proc. ICOOOLPS, 2006.Google Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- K. Williams, J. McCandless, and D. Gregg. Dynamic interpretation for dynamic scripting languages. In Proc. CGO, pages 278--287, 2010. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- M. Zaleski, A. D. Brown, and K. Stoodley. YETI: a graduallY Extensible Trace Interpreter. In Proc. VEE, pages 83--93, 2007. Google ScholarDigital Library
Index Terms
- Characteristics of dynamic JVM languages
Recommendations
Workload characterization of JVM languages
Originally developed with a single language in mind, the JVM is now targeted by numerous programming languages-its automatic memory management, just-in-time compilation, and adaptive optimizations-making it an attractive execution platform. However, the ...
Efficient hosted interpreters on the JVM
Many guest languages are implemented using the Java Virtual Machine (JVM) as a host environment. There are two major implementation choices: custom compilers and so-called hosted interpreters. Custom compilers are complex to build but offer good ...
A comprehensive toolchain for workload characterization across JVM languages
PASTE '13: Proceedings of the 11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and EngineeringThe Java Virtual Machine (JVM) today hosts implementations of numerous languages. To achieve high performance, JVM implementations rely on heuristics in choosing compiler optimizations and adapting garbage collection behavior. Historically, these ...
Comments