Java 8 DateTimeFormatter 性能

标签 java performance java-8 date

我的以下代码在我的应用程序中的时间复杂度方面主要是最昂贵的。

public class Test {

    private static final DateTimeFormatter SQL_FORMATTER = DateTimeFormatter.ofPattern("MM/dd/yy HH:mm:ss");

    public static void main(String[] args) {

        Instant start = Instant.now();
        try {
            String parsedDate = parseISO8601UtcDateToSqlDateFormat("2000-01-01T00:00:00Z");
            System.out.println(parsedDate);
        } finally {
            long timeTaken = Duration.between(start, Instant.now()).toMillis();
            System.out.println("\n\nFinished processing in: "+timeTaken+ " ms!\n"); 
        }
    }

    public static String parseISO8601UtcDateToSqlDateFormat(String param) {

        TemporalAccessor accessor = DateTimeFormatter.ISO_INSTANT.parse(param);
        LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.from(accessor), ZoneOffset.UTC);
        return dateTime.format(SQL_FORMATTER);

    }

}

日期时间格式化至少消耗16ms

而我的完整应用程序执行了大量复杂的处理,并且在不到 1 毫秒的时间内完成。

P.S:问题与基准测试无关,我只是想了解使用 java 8 进行日期时间解析是否真的这么昂贵,还是我做错了什么。

最佳答案

你尝试过吗:

private static final DateTimeFormatter SQL_FORMATTER = DateTimeFormatter.ofPattern(SQLFormatConstants.JAVA_DATE_FORMAT);

private String parseISO8601UtcDateToSqlDateFormat(String param) {
    TemporalAccessor accessor = DateTimeFormatter.ISO_INSTANT.parse(param);
    LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.from(accessor), ZoneOffset.UTC);
    return dateTime.format(SQL_FORMATTER);
}

新的 Java 8 Time API 具有无状态和不可变的格式化程序。自定义格式化程序应编译一次并存储在常量中(例如 DateTimeFormatter.ISO_INSTANT)。

关于Java 8 DateTimeFormatter 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49117180/

相关文章:

java - 如何根据测验应用程序的管理操作向最终用户加载问题和答案集

javascript - 如何添加新脚本并将其加载到滚动上?

java - 在 Java 中增长数组的最节省内存的方法?

Linq 效率问题 - foreach 与聚合

java - 使用 Java 从 XSL-FO 生成 HTML

java - 如何通过测试 Java 中指定复杂程度的方法来检查代码覆盖率

java - 迭代 org.json.JSONObject 的值以将不同的操作应用于 JSONObjects 或 JSONArrays

java - Stream.skip 行为与无序终端操作

java - 在流操作中使用方法引用和函数对象之间的区别?

Java-通过套接字发送文件时文件会损坏,但发送到本地主机时除外