gpt4 book ai didi

performance - 为什么使 Vector 成为 Functor、Monad、Applicative、Alternative、Foldable 和 Traversable 实例的函数很慢?

转载 作者:行者123 更新时间:2023-12-03 14:47:16 25 4
gpt4 key购买 nike

vector 0.8 版的更新日志列出以下带有警告的更改:

Functor, Monad, Applicative, Alternative, Foldable and Traversable instances for boxed vectors (WARNING: they tend to be slow and are only provided for completeness).



有人可以解释为什么会这样吗?它只是类型类特化的正常成本,还是更有趣的东西?

更新:查看一些特定实例,例如:
instance Foldable.Foldable Vector where
{-# INLINE foldr #-}
foldr = foldr

其他折叠也是如此。这是否意味着 Vector 的折叠速度很慢?一般情况下?如果不是,是什么让非专业弃牌慢到足以发出警告?

最佳答案

一年半前,我将这些实例的原始集合提交给 Roman,并从那时起一直维护向量实例。 (一旦它们迁移到向量中,我必须从向量实例中删除这些实例,现在只为真正异国情调的东西维护它)。他担心的是,如果人们多态地使用这些实例,那么除非多态函数被内联和单态化,否则使向量融合的规则无法触发。

它们之所以存在,是因为并非地球上的每一段代码都是特定于 Vector 的,即便如此,有时使用通用名称也很好。

这里的慢是相对的。最糟糕的情况是它们的表现与其他任何人的折叠、绑定(bind)等一样,但 Roman 将每一个盒装值视为对个人的侮辱。 :)

关于performance - 为什么使 Vector 成为 Functor、Monad、Applicative、Alternative、Foldable 和 Traversable 实例的函数很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583403/

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