1

我在 Hack 中工作,并试图弄清楚“如果输入代码会运行得更快”,因为该语言将支持动态和静态类型,具体取决于文件上的标题。

您会进行哪些测试来查看两者之间的效率差异?

4

1 回答 1

3

Facebook Research最近发表的一篇描述 HHVM JIT 现状的论文阐明了(强调我的):

§2.1 [Hack's] 更丰富的类型提示仅由静态类型检查器使用,并被 HHVM 运行时丢弃。在运行时丢弃这些更丰富的类型提示的原因是 Hack 的渐进类型系统不健全。静态类型检查器是乐观的,它忽略了语言的许多动态特性。因此,即使一个程序类型检查,在运行时也可以观察到不同的类型。

本文继续解释 JIT 如何使用类型信息来优化程序,但目前类型信息并非来自类型提示。仍然是一本很好的读物,因为您似乎对 HHVM 的性能进行了投资。我还想指出,基于类型提示进行优化的请求已经有一段时间了,这表明这种优化不会很快到来。

于 2018-07-24T12:13:17.577 回答