如下所示,仅当您查看 数百万 次迭代时,日期处理的性能才有意义。相反,您应该选择易于阅读和维护的解决方案。
尽管可以使用
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毫秒。
但是……再次…… 您需要考虑到这是经过 一千万
次迭代之后的结果。这是过早优化的完美示例。我会选择最易读,最容易维护的工具。这就是为什么乔达时间答案是最好的。



