【问题标题】:Fastest String Format conversion最快的字符串格式转换
【发布时间】:2015-03-31 16:45:37
【问题描述】:

我有以下字符串:20140420000001 我想将其格式化为:2014-04-20+00:00:01

用 Java 最快的方法是什么?

还有什么比这更快的吗?

String dt = "20140420000001";
System.out.println(dt.substring(0, 4)+"-"+dt.substring(4, 6)+"-"+dt.substring(6, 8)+"+"+dt.substring(8, 10)+":"+dt.substring(10, 12)+":"+dt.substring(12, 14));

【问题讨论】:

  • 使用SimpleDateFormat。忘记过早优化,这不是性能瓶颈。
  • @LuiggiMendoza:我见过日期解析/格式化真的成为瓶颈的情况 - 但我肯定会先简单地做,只寻找“最快在证明它是特定情况下的瓶颈之后可能的方式”。
  • @LuiggiMendoza 如果操作只想在字符串中的某些固定位置插入- +:,则可能不需要simpledateformat。
  • @AngryPanda "数据是从 mysql 数据库中获取的" ==> 那么您应该在代码中将它们作为日期接收并格式化日期。
  • @AngryPanda 这非常令人惊讶 - 日期通常以长(64 位整数)形式存储在数据库中,并且比字符串处理速度快得多。如果性能很重要,我会重新考虑该选择,并确保您使用了适当的日期类型并分析了查找瓶颈的速度较慢的查询。

标签: java string performance date formatting


【解决方案1】:
    return new String(new char[] {
            s.charAt(0), s.charAt(1), s.charAt(2), s.charAt(3),
            '-', s.charAt(4), s.charAt(5),
            '-', s.charAt(6), s.charAt(7),
            '+', s.charAt(8), s.charAt(9),
            ':', s.charAt(10), s.charAt(11),
            ':', s.charAt(12), s.charAt(13)
    });

不太漂亮,但在纯 Java 中几乎没有更快的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2019-04-01
    • 2014-09-05
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多