【发布时间】:2015-10-28 01:59:11
【问题描述】:
我想知道从 java 集合到 scala 的隐式转换的成本。在this doc 中有几个隐式的双向转换,据说“从源类型转换为目标类型并再次返回将返回原始源对象”。
我的结论是成本应该很小(包装),但仍然是多少?
我问这个问题是因为我在一些 scala 代码中使用了 java 集,当我导入 asScalaSet 时,它被隐式转换为 scala 集(我在某些地方确实需要它)。但是,对于极少的访问器(例如size())来说,这可能是一个随之而来的开销
有人知道吗?
【问题讨论】:
-
我不知道编译器有多聪明,但似乎在很多情况下它应该能够避免分配包装类,像
size这样的内联调用,并且不会产生开销? -
这不是您问题的答案,但通常不推荐使用“魔术”JavaConversions,而倾向于使用更明确的JavaConverters,这需要您编写 .asScala 或 .asJava 进行转换明确的。
-
好消息@RüdigerKlaehn。这确实很有用,因此至少我可以控制何时发生转换。并且来自python背景,我只能同意这一点(“显式优于隐式” - python的禅宗)
标签: java scala performance collections type-conversion