当我更改java类中某个字段的数据类型时,为什么Univocity解析器会慢下来?

当我更改java类中某个字段的数据类型时,为什么Univocity解析器会慢下来?,java,univocity,Java,Univocity,我使用这个工具大约3天了。一切都很顺利,我有一个包含3个记录定义(头、数据、尾)的文件,我正在使用一个带有3个BeanListProcessor的InputValueSwitch 数据对象有大约40个属性,除1外,所有属性都是字符串,出生日期定义为带有@Format注释的日期。将patientDateOfBirth定义为一个日期,我可以在几秒钟内处理34K行,这是可以接受的 @Parsed(field = "patientDateOfBirth") @FixedWidth(from = 148,

我使用这个工具大约3天了。一切都很顺利,我有一个包含3个记录定义(头、数据、尾)的文件,我正在使用一个带有3个BeanListProcessor的InputValueSwitch

数据对象有大约40个属性,除1外,所有属性都是字符串,出生日期定义为带有@Format注释的日期。将patientDateOfBirth定义为一个日期,我可以在几秒钟内处理34K行,这是可以接受的

@Parsed(field = "patientDateOfBirth")
@FixedWidth(from = 148, to = 158)
@Format(formats = {"yyyy-MM-dd"}, options = "lenient=false")
private Date patientDateOfBirth;
但是,如果我将数据类型从Date更改为String,对于相同的34K行,处理时间将增加到大约5分钟,这对我来说没有意义。这对任何人都有意义吗

@Parsed(field = "patientDateOfBirth")
@FixedWidth(from = 148, to = 158)
@Validate(allowBlanks = true)
private String patientDateOfBirth;

您确定lenient选项和validate选项都与此无关吗?lenient选项在“fast”版本上,所以我认为这是可以的。我刚刚测试了删除@Validate表单和“字符串”版本的代码,这对速度没有任何影响。我认为您必须使用分析器来解决这个问题。如果时间从秒增加到5分钟,您将有大量数据来查看瓶颈在哪里。