首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Sorbet的红宝石类型检查器会对红宝石应用程序的性能产生影响吗?

使用Sorbet的红宝石类型检查器会对红宝石应用程序的性能产生影响吗?
EN

Stack Overflow用户
提问于 2019-07-08 09:24:55
回答 2查看 553关注 0票数 2

也许是新手的问题,但如果你从来不问,你永远也不会知道

https://sorbet.org/应用程序上使用Stripe's Sorbet ( RoR ),可以提高应用程序的性能吗?(性能意味着响应时间,而不是健壮性\运行时错误率)

我对动态类型的语言进行了一些阅读(在本例中尤其是Javascript ),并发现如果我们继续发送某些函数(例如,foo)相同类型的对象,则引擎会对该函数进行一些优化工作,以便当使用相同类型再次调用它时,解释工作会更快。

我想,可能ruby译员也做了类似的工作,这可能意味着类型检查可能会提高口译速度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-08 16:19:10

我想,可能ruby译员也做了类似的工作,这可能意味着类型检查可能会提高口译速度。

它还没有,但有一天我们可能会建造这个。Sorbet的目标是为人们构建一个类型系统,而不是为计算机构建一个类型系统(编译器)。它可以引入一些性能开销,但是当Stripe在生产中运行它时,我们会控制它。在内部,如果开销超过cpu时间的7%,我们将分页。

我对动态类型的语言进行了一些阅读(尤其是Javascript,在本例中),发现如果我们继续发送某些函数(例如foo)相同类型的对象,则引擎会对该函数进行一些优化工作,因此当使用相同类型再次调用它时,解释工作会更快。

是的,这是可以做到的。您所描述的是JIT编译器中常见的优化。您所指的技术使用运行时分析,实际上是一种常见的替代技术,它允许在没有类型系统的情况下实现这一结果。还值得注意的是,与类型系统相比,构建良好的JIT可以更频繁地执行,因为类型系统编码可能发生的事情,而概要分析和JIT可以为实际发生的事情进行优化。

也就是说,构建一个JIT通常比构建一个在线编译器要多得多,因此,取决于一个人想要投入多少资金来加速Ruby,无论是使用JIT还是使用类型,在不同的现实环境中都可以证明这一点更好。

我想,可能ruby译员也做了类似的工作,这可能意味着类型检查可能会提高口译速度。

总结上一段,Sorbet类型系统目前并没有加速Ruby,但它也没有减缓它的速度。类型系统确实可以用于加速语言,但它们并不是您唯一的工具,分析和JIT编译是主要的竞争对手。

票数 2
EN

Stack Overflow用户

发布于 2019-07-08 09:50:45

您正在讨论的优化更多地应用于为ruby运行时工作的JIT。

一般来说,sorbet通过引入类型接口或方法签名来实现类型安全.它们启用在部署应用程序之前应用的静态类型检查,以消除“类型错误”。

sorbet附带了一个运行时组件,它可以在运行时对可运行的应用程序执行类型检查,但是这些组件在包装方法时会降低应用程序的性能,以便检查正确的https://sorbet.org/docs/runtime#runtime-checked-sig-s类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56931904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档