当前位置:  开发笔记 > 编程语言 > 正文

为什么类型检查昂贵?

如何解决《为什么类型检查昂贵?》经验,为你挑选了1个好方法。

我听过许多轶事,动态类型语言的一个大问题是类型检查非常慢.为什么它会变慢?使用可能发生变化的运行时分配类型导致计算效率大幅下降的计算机科学理性是什么?



1> Aaron3468..:

动态类型语言必须代码运行执行类型检查.虽然它们有时可以编译,但它们需要削减许多角落以获得合理的性能.在运行时检查的一个重大缺点是,如果类型无效,则解释器只能抛出异常或停止执行.

因此,他们经常试图强制类型以防止异常,即使它可能是不合需要的.在python中,发现整数的简单除法意味着我的用户输出突然充满'2.0',因为我没有明确地重新投入,这并不罕见int.

计算机科学的理性是类型检查是一种非常繁重的算法.对于您调用的每个函数,必须验证所有涉及的类型(或强制执行可能是另一个函数调用),并且之后必须更新类型信息.在运行时,您只能拥有一个简单的类型系统和极少的优化.通过比较编译器甚至可以利用弱类型系统来优化您的低效算法.


编译静态类型语言和解释动态类型语言是很常见的.这是因为如果为编译器设计一种语言,那么将类型检查的责任交给编译器是一件很明智的事情,这样你的代码就会更加优化,并且不需要在运行时管理类型.运行时需要携带的越少,执行的代码就越快.

最终,这意味着为解释器设计的语言无法承受编译器可以输入的级别.除了利用类型信息进行优化的自由度较低 - 性能提高1 - 它们必须在运行时携带和修改类型信息 - 攻击2.较弱的类型系统还引入了许多类型的安全漏洞.

当然,也有许多需要弱打字的情况.动态语言通常扮演脚本的角色; 它们可以快速编写代码,易于理解,并且可以比编译器更快地移植到新平台!这使得它们非常适合将非常不同的系统粘合在一起.一个脚本可以与操作系统及其上的许多程序进行交互,以安排从您喜爱的网站每日下载所有最新的猫视频.

与往常一样,我强烈建议您在曲目中使用动态语言和静态语言.能够获得强类型的保证以及轻松打字的便利性是非常宝贵的.是一个杂食的代码:)

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有