gpt4 book ai didi

performance - Swift 是唯一具有溢出检查算法的(主流)语言吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:00 26 4
gpt4 key购买 nike

我今天开始学习 Swift 语言。我学习过基本和高级运算符。

对我来说,Swift 中的所有默认算术运算都会针对上溢/下溢进行检查这一事实有点令人惊讶。

是否有其他主流语言具有此功能?

Swift 运行时的算法是否因此可能不是最优的(性能方面)?

他们为什么要在语言中包含这个特性,如果它很好,为什么其他人还没有使用它?

最佳答案

性能

这种验证必然会产生成本。在最低级别,导致溢出的操作需要单个 CPU 操作。在此操作期间检查是否存在溢出至少需要一个操作(例如使用考虑溢出标志的 jump operations(分支))。

请注意,根据实际代码,可能有很多优化可以在编译期间完成,以避免对每个操作进行耗时的检查(简单示例:32 位 0 + 任何短不能溢出) .

所以,是的,包含支票不是最佳选择。

为什么

一些语言包括这种检查以减轻程序员的负担。如果程序员不用检查自己,他就不会犯不检查的错误。如果使用给定语言的程序员不会犯某类错误,则该语言在可靠性方面的声誉就会提高一点。

至于为什么其他一些语言不包含检查...不同的语言设计者有不同的哲学。对于某些人来说,重要的是允许程序员创建与理论上一样快的程序。对于其他一些人,更重要的是帮助程序员编写正确且健壮的程序。例如,C/C++ 以渲染超快程序而著称,而 Ada 以在您的程序很可能正确之前甚至不编译而著称。

有时是理念问题,有时是需求问题。在小型微 Controller (小内存、慢时钟)上,您不希望有太多自动检查,因为它可能会显着减慢程序的执行速度。

其他语言

Here's a small table关于语言处理(或不处理)整数溢出的不同方式。有些语言将它留给程序员。有些人提出异常(exception)。有些会更改数据类型以无错误地接受结果(例如:int 到 long,long 到 BigInteger)。

关于performance - Swift 是唯一具有溢出检查算法的(主流)语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28851095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com