在有关Scala value classes的文档中,提到了需要为 value class 实际分配实例的三种情况:
分配摘要
值类实际上在以下情况下被实例化:
- 值类被视为另一种类型。
- 一个值类被分配给一个数组。
- 进行运行时类型测试,例如模式匹配。
当需要实例化值类时,编译器或语言功能中是否存在会产生警告的设置?
在有关Scala value classes的文档中,提到了需要为 value class 实际分配实例的三种情况:
分配摘要
值类实际上在以下情况下被实例化:
- 值类被视为另一种类型。
- 一个值类被分配给一个数组。
- 进行运行时类型测试,例如模式匹配。
当需要实例化值类时,编译器或语言功能中是否存在会产生警告的设置?
不,目前没有。
然而,这种微优化很少值得费心。
如果您有一些非常非常热门的代码并且需要尽可能优化它,那么只需尝试一些事情并重新进行基准测试。
如果代码足够热,JIT 编译器将在很多时候更改您的代码在机器级别上所做的事情。
分配值类的开销通常甚至无法衡量,除非它是线程唯一在做的事情。请参阅例如https://groups.google.com/forum/#!topic/scala-user/XdQnbcs2SRM了解一些无法衡量价值类别分配的基准。