使用 Scala 结构类型的性能和维护注意事项是什么?



我的同事不让我用这两种理由。(

性能考虑是通过反射调用结构类型中的方法,这在JVM上比常规方法调用要慢得多。

我发现,当我需要结构类型时,几乎总是因为我想使用的库设计不当(例如,在StringBuilder/StringBuffer等情况下缺少超类)。

因此,如果您出于其他原因想要使用结构类型,这可能是一个设计问题——这将比配置或性能考虑更严重。Scala的类型系统非常强大,使用结构类型有点像"放弃",用"正常"的方式来获得正确的结果。所以,如果你有一些代码似乎"需要"结构类型,试着分析为什么会这样,如果你卡住了,也许可以问社区是否可以改进(https://codereview.stackexchange.com/似乎是一个很好的地方)。

顺便说一句,每个人都倾向于过度使用他刚刚"grokked"的功能,例如初学者一旦获得概念就会疯狂地进行模式匹配,即使有更好的方法(例如map, flatMap, foreach等选项函数)。

这也取决于你使用它们的次数,M. Odersky和G. Dubochet在他们的报告中有一些基准。

最新更新