Type stability in Julia: avoiding performance pathologies in JIT compilation
Abstract
As a scientific programming language, Julia strives for performance but also provides high-level productivity features. To avoid performance pathologies, Julia users are expected to adhere to a coding discipline that enables so-called type stability. Informally, a function is type stable if the type of the output depends only on the types of the inputs, not their values. This paper provides a formal definition of type stability as well as a stronger property of type groundedness, shows that groundedness enables compiler optimizations, and proves the compiler correct. We also perform a corpus analysis to uncover how these type-related properties manifest in practice.
Document Details
- Document Type
- Pub Defense Publication
- Publication Date
- Oct 15, 2021
- Source ID
- 10.1145/3485527
Entities
People
- Artem Pelenitsyn
- Benjamin Chung
- Jan Vitek
- Julia Belyakova
- Ross Tate
Organizations
- Cornell University
- European Research Council
- National Science Foundation
- Northeastern University
- Office of Naval Research