【发布时间】:2012-03-27 15:35:12
【问题描述】:
在编写解释型语言时,弱类型和强类型哪个更快?
我想知道这一点,因为通常更快的动态类型解释语言(Lua、Javascript),事实上大多数解释语言都使用弱类型。
但另一方面,强类型提供了弱类型所不能保证的保证,那么,优化技术是否可以用于一种方法,而另一种方法则不可能?
对于强类型,我的意思是类型之间没有隐式转换。例如,这在强类型语言中是非法的,但在弱类型语言中(可能)是合法的:"5" * 2 == 10。尤其是 Javascript 因这些类型转换而臭名昭著。
【问题讨论】:
-
+1 一个有趣的问题,虽然我担心一般来说很难回答。我期待着关于解释器优化的血腥细节。
-
明确一点,弱类型和强类型是什么意思? (我尽量避免对reasons given here 使用这些术语——人们以许多不兼容的方式使用它们。)
-
强类型化,因为类型之间没有隐式转换。例如,这在强类型语言中是非法的,但在弱类型语言中(可能)是合法的:
"5" * 2 == 10。特别是 Javascript 因这些类型转换而臭名昭著。编辑:将其添加到问题中。 -
如今,大多数现代 JavaScript 引擎不再解释而是直接编译成字节码。所以很难把这个问题应用到那种语言上。
-
这个问题真的没有意义,有两个方面。首先:执行这些隐式转换时会产生隐式转换的开销。不执行任何此类隐式转换的程序将是相同的,无论语言是否支持它们。所以你的问题就像问具有内置反正切函数的编程语言是否比没有的语言慢。其次:隐式转换的实现在动态类型语言和静态类型语言中是完全不同的;所以即使你的问题有连贯性
标签: optimization typing scripting-language