如下所示,只有在查看数百万次迭代时,日期处理的性能才有意义.相反,您应该选择易于阅读和维护的解决方案.
虽然您可以使用SimpleDateFormat,但它不是可重入的,因此应该避免使用.最好的解决方案是使用伟大的Joda时间类:
private static final DateTimeFormatter DATE_FORMATTER = new DateTimeFormatterBuilder()
.appendYear(4,4).appendMonthOfYear(2).appendDayOfMonth(2).toFormatter();
...
Date date = DATE_FORMATTER.parseDateTime(dateOfBirth).toDate();
如果我们谈论你的数学函数,首先要指出的是你的数学代码中存在我修复过的错误.这是手工做的问题.也就是说,处理字符串一次的将是最快的.快速测试运行表明:
year = Integer.parseInt(dateString.substring(0, 4));
month = Integer.parseInt(dateString.substring(4, 6));
day = Integer.parseInt(dateString.substring(6));
需要大约800毫秒时:
int date = Integer.parseInt(dateString);
year = date / 10000;
month = (date % 10000) / 100;
day = date % 100;
total += year + month + day;
需要大约400毫秒.
然而……再次……你需要考虑到这是经过1000万次迭代之后.这是过早优化的完美例子.我会选择最易读且最容易维护的那个.这就是为什么Joda的时间答案是最好的.