當前我正在逐行讀取數據文件。每行有格式DD/MM/YYYY HH時間戳:毫米:ss」的 我需要將其轉換成自紀元毫秒我試圖兩種方式將時間戳轉換爲自世紀以來的毫秒數
1>使用標準庫
timestamp = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.ENGLISH).parse(ddMMyyyy + " " + HHmmss);
return timestamp.getTime();
2>這是使用喬達時庫
jiffy = format.parseMillis(ddMMyyyy + " " + HHmmss);
分析後,我發現,方法之一是令人難以置信的昂貴,而方法二是有點比第一更便宜的一個,但仍然昂貴。第一個就是APROX CPU時間爲1600ms,第二次CPU時間爲1100ms。
問題 -
1>有沒有更好的庫,不是那麼貴?
2>如果沒有標準庫,有人可以指向我的轉換邏輯嗎?我嘗試了谷歌搜索,但沒有成功。在這個網站上有幾個公式,但他們不工作,或者讓他們打電話,然後他們不夠簡單。
感謝
**
添加的問題
**
這裏ok..adding更多細節更多細節。 測試運行是1000萬條記錄。每條線都有時間戳,自紀元以來需要將其轉換爲毫秒。
這是我嘗試的三個版本的代碼。
1>隨着喬達時間 - 迄今爲止最好的結果,但不能接受。 它在時間轉換中花費了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>如果沒有標準庫,有人可以指向我的轉換邏輯嗎?我嘗試了谷歌搜索,但沒有成功。在這個網站上有幾個公式,但他們不工作,或者讓他們打電話,然後他們不夠簡單。
1100毫米有多少值? 2? 20億?無論如何,從文件中讀取行數可能會比解析日期時間長得多(讀取幾個數量級的慢),因此優化解析不會導致任何可測量的差異。 –
如果你只測量一次,你的JVM就沒有預熱。做一個適當的基準。 –
在下面添加更多細節.. – Nishant