中文

我的哪些瞬态类型检查并非(几乎)免费?

编程语言 2019-09-13 v1

摘要

渐进类型化语言中使用的一种类型检查形式是瞬态类型检查:每当一个对象“流经”带有类型标注的代码时,都会动态检查该对象是否具有该标注所要求的方法。虚拟机中的即时编译与优化可以消除运行时瞬态类型检查的许多开销。遗憾的是,这种优化并不均匀:某些类型检查会显著降低甚至提高程序的性能。在本文中,我们改进了所谓的“Takikawa”协议,并用它来识别哪些类型标注对性能影响最大。特别地,我们展示了如何通过绘制此类基准测试在源代码中存在的类型标注变化时性能的图形,来辨别性能中的潜在模式。我们通过测试 Moth 虚拟机来演示我们的方法:对于 Moth 的瞬态类型检查影响性能的许多基准测试,我们已能够识别出一到两个可能是原因的具体类型标注。若无这些类型标注,瞬态类型检查的性能影响变得可忽略。利用我们的技术,程序员可以通过移除昂贵的类型检查来优化程序,而虚拟机工程师则可以识别编译器优化的新机会。

关键词

引用

@article{arxiv.1909.05581,
  title  = {Which of My Transient Type Checks Are Not (Almost) Free?},
  author = {Isaac Oscar Gariano and Richard Roberts and Stefan Marr and Michael Homer and James Noble},
  journal= {arXiv preprint arXiv:1909.05581},
  year   = {2019}
}