|
|
1
28
在静态类型语言中访问属性/方法时,查找通常可以简化为静态函数地址。即使对于速度较慢的虚拟方法,查找也只是从vtable读取偏移量。
在动态语言中,名称基于字符串。想查查吗
所有这些查找都是 非常 很难做到快。Python拥有世界上最完善的哈希表实现之一,JavaScript已经投入了数百万美元的研究资金来加快它的速度。这些策略是有效的——将Chrome的JavaScript与IE 5进行比较,看看有多少——但它们比静态生成函数调用要困难得多。 我应该提到的是,一种语言的“动态”程度可能会有所不同。Python有几种不同的方式与变量查找进行交互,这在某些情况下很好,但使优化变得非常困难。其他动态语言,如Common Lisp和Smalltalk,可以在许多用例中与静态语言竞争,因为动态查找/修改更容易控制。 |
|
|
2
12
什么是n?是号码吗?它是一根绳子吗?它是您之前定义的类吗? 编译器无法知道它将获得什么输入。您必须在运行时执行大量检查,这意味着您正在为简单操作执行更多隐式工作。 |
|
3
10
某些类型的编译时优化只能在变量的确切类型已知的情况下执行。 动态类型语言通常还添加了逻辑来确定类型,并确保值对于类型是正确的。 |
|
|
4
5
动态类型语言必须在运行时进行所有检查,因为类型可能在执行过程中发生更改。 静态类型化语言在编译时解析所有类型,因此一次性预先消耗成本。
这完全取决于实现:动态类型化语言可能比编译语言更快,但要完成这一点需要更多的工作。 |
|
|
5
1
你的问题有点离题,因为动态类型语言实际上并不慢。很多例子可能是在实践中,但其他例子是快速的(其中fast的意思是“与c相当”或类似的东西,cf common lisp)。
但是,如果你只是想说,Python和C++之间的区别,那就不是动态的和静态的,这才是真正的问题。 |
|
|
6
0
这是因为静态类型的语言通常被编译成机器代码,而动态类型的语言在大多数情况下由解释器运行。 |
|
|
Sudhanva c · 如何提高编码技能?[已关闭] 8 年前 |
|
|
hoffm · 为什么Ruby找不到调用方类中定义的常量? 8 年前 |
|
|
Thamme Gowda · “lambda”关键字的较短替代项? 8 年前 |
|
|
AlphaModder · 有没有带有“不寻常”访问修饰符的编程语言? 10 年前 |
|
|
lucasasecas · 有可能静态地使用动态语言吗? 11 年前 |
|
|
Eugenio Laghi · 仅由括号、加号和感叹号组成的语言 11 年前 |
|
dallin · 数组中的逗号运算符是否有名称? 12 年前 |