我在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.IntegergetAt返回一个int,该int通过对.class的调用自动装箱到Integer。
在使用def时,是否存在具有默认类型的表?
变量的类型不影响方法的类型,但是如果您担心Groovy的动态类型影响代码的性能,请使用@CompileStatic注释。
https://stackoverflow.com/questions/38243787
复制相似问题