我在groovy中做了一个简单的函数,在datetime变量上,我有这样的行
def minutes = date.getAt(Calendar.MINUTE)
出于好奇,我检查了时间性能,它工作了3,5秒,输入的大小大约有90k个日期。一个简单的改变,从def
到int
,使我的代码在2,7-2,5k内工作。getAt()
返回int
,但分钟具有BigDecimal
类型(在JMC中签入)。类型推断算法在groovy中是如此糟糕,还是我没有读过关于def
关键字的教程的某些部分?在使用def
时,是否存在具有默认类型的表?
发布于 2016-07-07 12:31:27
getAt()返回int,但分钟具有BigDecimal类型
minutes
的类型是一个整数
def minutes = date.getAt(Calendar.MINUTE)
您可以通过在Groovy shell或控制台中运行以下代码来验证这一点
groovy:000> new Date().getAt(Calendar.MINUTE).class
===> class java.lang.Integer
getAt
返回一个int
,该int
通过对.class
的调用自动装箱到Integer
。
在使用def时,是否存在具有默认类型的表?
变量的类型不影响方法的类型,但是如果您担心Groovy的动态类型影响代码的性能,请使用@CompileStatic
注释。
https://stackoverflow.com/questions/38243787
复制相似问题