Which of My Transient Type Checks Are Not (Almost) Free?
Isaac Oscar Gariano, Richard Roberts, Stefan Marr, Michael Homer,, James Noble

TL;DR
This paper investigates the performance impact of transient type checks in gradually typed languages, refining a protocol to identify which annotations cause significant overhead and how to optimize or eliminate them.
Contribution
It refines the Takikawa protocol to pinpoint specific type annotations that significantly affect performance in virtual machines.
Findings
Certain type annotations cause notable performance overhead.
Removing specific annotations can make transient checks nearly free.
Graphing performance variations reveals patterns in overhead impact.
Abstract
One form of type checking used in gradually typed language is transient type checking: whenever an object 'flows' through code with a type annotation, the object is dynamically checked to ensure it has the methods required by the annotation. Just-in-time compilation and optimisation in virtual machines can eliminate much of the overhead of run-time transient type checks. Unfortunately this optimisation is not uniform: some type checks will significantly decrease, or even increase, a program's performance. In this paper, we refine the so called "Takikawa" protocol, and use it to identify which type annotations have the greatest effects on performance. In particular, we show how graphing the performance of such benchmarks when varying which type annotations are present in the source code can be used to discern potential patterns in performance. We demonstrate our approach by testing the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
