什么是Scala最便宜的类型?
发布时间:2020-12-16 09:02:34 所属栏目:安全 来源:网络整理
导读:我需要使用一个类型(任何类型)作为隐式的标记作为类型参数,以区别于另一个隐式.这很奇怪,但这可能是另一个问题. 由于我可以使用任何类型,我在考虑使用最便宜的,在内存占用和初始化时间方面.在这种情况下,它可能不会对性能产生太大影响,但问题很有趣:哪一个
我需要使用一个类型(任何类型)作为隐式的标记作为类型参数,以区别于另一个隐式.这很奇怪,但这可能是另一个问题.
由于我可以使用任何类型,我在考虑使用最便宜的,在内存占用和初始化时间方面.在这种情况下,它可能不会对性能产生太大影响,但问题很有趣:哪一个是Scala最便宜的类型? 在Java中,答案显然是java.lang.Object.但是Scala有一些“有趣”的类型:Any,AnyVal类型和底部类型,并且可能围绕它们进行优化. Nothing类型无法实例化,因此从此比较中排除. 解决方法
如果您选择Any或AnyVal,那么您传递的任何原语都将被装箱,因此可能已经过了.
AnyRef确实是一个不错的选择. 如果没有任何类型参数化,那么“基元”也是很好的选择 – 例如布尔或Int. 而且还有Null,这是一个非常有趣的选择,因为它根本不分配任何东西,而且它是一个文字,所以它必然是快速的.不知道你究竟在做什么,我无法分辨这是否是有效的选择. 另一个有趣的选项是java.lang.Integer(使用静态方法valueOf),因为它保证了小值的引用相等性(你必须检查文档以查看精确的范围),这意味着不涉及任何分配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |