我在 Hack 中工作,并试图弄清楚“如果输入代码会运行得更快”,因为该语言将支持动态和静态类型,具体取决于文件上的标题。
您会进行哪些测试来查看两者之间的效率差异?
我在 Hack 中工作,并试图弄清楚“如果输入代码会运行得更快”,因为该语言将支持动态和静态类型,具体取决于文件上的标题。
您会进行哪些测试来查看两者之间的效率差异?
Facebook Research最近发表的一篇描述 HHVM JIT 现状的论文阐明了(强调我的):
§2.1 [Hack's] 更丰富的类型提示仅由静态类型检查器使用,并被 HHVM 运行时丢弃。在运行时丢弃这些更丰富的类型提示的原因是 Hack 的渐进类型系统不健全。静态类型检查器是乐观的,它忽略了语言的许多动态特性。因此,即使一个程序类型检查,在运行时也可以观察到不同的类型。
本文继续解释 JIT 如何使用类型信息来优化程序,但目前类型信息并非来自类型提示。仍然是一本很好的读物,因为您似乎对 HHVM 的性能进行了投资。我还想指出,基于类型提示进行优化的请求已经有一段时间了,这表明这种优化不会很快到来。