Skip to content

Instantly share code, notes, and snippets.

@xushijie
Last active January 1, 2016 16:58
Show Gist options
  • Save xushijie/8173720 to your computer and use it in GitHub Desktop.
Save xushijie/8173720 to your computer and use it in GitHub Desktop.
Characteristics of Dynamic JVM Languages (VMIL13)
They 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 have previously presented a comprehensive toolchain [20] for workload characterization across JVM languages2, which was successfully applied in studying the differences.
The metrics are:
Call-site Polymorphism.
Hints at opportunities for optimizations at polymorphic call-sites, e.g. inline caching [13] (based on the number of receiver types), or method inlining [10] (based on the number of target methods). => On average, 98% call site only has one targte method.
Field, Object, and Class Immutability.
Enables load elimination [3] (replacing repeated accessess to immutable objects with an access to a compiler-generated temporary stored in a register), and identifies objects and side-effectfree data structures amenable to parallelization.
Object Lifetimes.
Determines garbage-collector (GC) workload,and aids in design and evaluation of new GC algorithms, e.g. the lifetime-aware GC [15].
Unnecessary Zeroing.
Hints at opportunities for eliminating unnecessary zeroing of memory for newly allocated objects, which comes with a performance penalty [25].
Identity Hash-code Usage.
Hints at opportunities for reducing header size for objects that never need to store their identity hash code (often derived from their memory location upon first request [1]).
@xushijie
Copy link
Author

Some benchmarks:
DaCapo [4], SPECjvm20084, or the Scala Benchmark suite

http://users.cecs.anu.edu.au/~steveb/research/research-areas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment