我想改善程序执行时间。程序导入CSV数据,并逐行验证。
经过多次测试后,我注意到循环时间的90%花在了这一行上:
HashSet<ConstraintViolation<EntryDTO>> l = ValidationTools.validate(this.validator, entryDTO);
entryDTO包含当前行的所有字段,this.validator包含字段必须遵循的规则。 所以我检查了(在ValidationTools类中)这个方法是如何实现的:
public static <T> HashSet<ConstraintViolation<T>> validate(Validator validator, T resource, Class<?>... groups) {
return (HashSet<ConstraintViolation<T>>) validator.validate(resource, groups);
}
哪个直接引用javax.validation.Validator,所以我无法改进任何内容...有什么我可以做得更好来改善执行时间吗?
最后但并非最不重要的是,我注意到这个方法在循环的每次迭代中花费的时间越来越多......让我想一想垃圾收集器的问题。
谢谢你有任何领导:)