2

我一直在寻找 Moose 的替代品(现代面向对象的 Perl) 因为 Moose 很慢,我已经看到了几个与这个问题相关的帖子,我不想要那个。 来自同一创作者的示例https ://www.youtube.com/watch?v=ugEry1UWg84&feature=youtu.be&t=260

所以我从 moose 的同一个创造者那里找到了这个替代方案:

https://metacpan.org/pod/MOP#DESCRIPTION MOP - Perl 5 的元对象协议

该模块以最小的开销实现了 Perl 5 的元对象协议,并且没有非核心依赖项(最终)。

使用 UNIVERSAL::Object:

https://metacpan.org/pod/UNIVERSAL::Object

这是 Moose 的一个不错的选择和替代品,有人测试过这个软件吗?

相关帖子: https ://www.perlmonks.org/?node_id=1220917

谢谢。

注意:我忘了提到我知道 Moo、Mouse 等,也许存在更好的东西?

4

2 回答 2

8

MOP等级很低,莫邪是基于它的;但它仍然是一个概念证明。

已经在生产中测试了更快、更轻的替代品:MooMouse

于 2018-11-19T15:37:16.977 回答
1

您在哪种情况下使用 Moose 并发现它很慢?当然会涉及开销,但大部分发生在启动时(编译);然后,在运行时,大多数功能都很便宜(只要您使您的类不可变),如文档中所述。随着时间的推移,Moose 已经成为面向对象编程的事实上的标准,并且它拥有一个非常非常广泛的生态系统(在 metacpan 上搜索 MooseX 返回 820 个结果)。不要过早放弃它。

如果你真的需要更快的启动时间(例如在 vanilla CGI 环境中),Moose 最相关的替代方案是Moo,即最小面向对象。它非常轻量级,没有 XS 依赖,同时实现了 Moose 的重要子集(此外,它的语法与 Moose 完全兼容,因此如果您需要 Moo 中缺少的某些功能,您可以随时升级到 Moose) . 它还拥有丰富的生态系统。

于 2018-11-19T20:42:14.563 回答