有一些语言支持足够强大的类型系统,它们可以在编译时证明代码不会寻址超出其边界的数组。我的问题是,如果我们要将这样的语言编译到 JVM,是否有某种方法可以利用它来提高性能并删除每次数组访问时发生的数组边界检查?
1) 我知道最近的 JDK 支持一些数组绑定检查消除,但由于我在编译时知道某些调用是安全的,所以我可以更安全地删除。
2) 有些人可能认为这不会对性能产生太大影响,但它肯定会,尤其是在阵列/计算密集型应用程序中,例如科学计算。
关于铸造的同样问题。我知道某些东西是某种类型,但 Java 不是,因为它的类型系统有限。有没有办法告诉JVM“相信我”并跳过任何检查?
我意识到可能没有办法做到这一点,因为 JVM 通常是分布式的,用这个功能修改 JVM 是否合理?这是已经完成的事情吗?
这是将更强大的类型语言编译到 JVM 的挫折之一,它仍然受到 Java 限制的阻碍。