目前我正在逐行读取数据文件。每行都有一个时间戳,格式为dd/MM/yyyy HH:mm:ss" 我需要将其转换为自纪元以来的毫秒。我尝试了两种方法
1> 使用标准库
timestamp = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.ENGLISH).parse(ddMMyyyy + " " + HHmmss);
return timestamp.getTime();
2> 这是使用 Joda-Time 库
jiffy = format.parseMillis(ddMMyyyy + " " + HHmmss);
分析后,我发现方法一非常昂贵,而方法二比第一种便宜一点,但仍然很贵。第一个需要大约 1600 毫秒的 CPU 时间,第二个需要 1100 毫秒的 CPU 时间。
问题 -
1> 有没有比这更贵的图书馆?
2>如果没有标准库,有人可以指点我转换逻辑吗?我尝试谷歌搜索但没有成功。这个网站上的公式很少,但它们不起作用或让我们调用它然后它们不够简单。
谢谢
**
添加有关问题的更多详细信息
**
好的..在此处添加更多详细信息。测试运行是针对 1000 万条记录。每行都有时间戳,需要从纪元开始转换为毫秒。
这是我尝试过的三个版本的代码。
1> 使用 Joda-Time - 迄今为止最好的结果,但不可接受。它花费 26.9% 的时间进行时间转换。
long jiffy = 0;
public double getTime( String ddMMyyyy, String HHmmss) throws ParseException
{
jiffy = format.parseMillis(ddMMyyyy + " " + HHmmss);
return jiffy/1000;
}
这是分析 http://postimg.org/image/bvrt3esgr/
2> 使用 SimpleTimeFormat java 类。如果一个人再次使用相同的对象,则执行此任务需要 36.1%。
private long timestamp;
public static final SimpleDateFormat SDF = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss",Locale.ENGLISH);
long jiffy = 0;
public double getTime( String ddMMyyyy, String HHmmss) throws ParseException
{
timestamp = SDF.parse(ddMMyyyy + " " + HHmmss).getTime();
return timestamp;
}
这是配置文件 http://postimg.org/image/72iua8x9j/ 3> 带有 SimpleTimeFormat java 类。如果正在创建新对象,则执行此任务需要 51.6%。
public long getTimei( String ddMMyyyy, String HHmmss) throws ParseException
{
timestamp = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.ENGLISH).parse(ddMMyyyy + " " + HHmmss);
return timestamp.getTime();
}
这是个人资料 postimg.org/image/rnp2m1c2r/
现在我的问题还是一样???
1> 有没有比这更贵的图书馆?
2>如果没有标准库,有人可以指点我转换逻辑吗?我尝试谷歌搜索但没有成功。这个网站上的公式很少,但它们不起作用或让我们调用它然后它们不够简单。