歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

友善之臂Micro2440下的Embedded Linux中Java遇到的問題

最近在做一個項目中使用了友善之臂Micro2440,其中系統使用的是Embedded Linux。遇到了一個問題,就是程序運行非常的緩慢。

開始以為是讀寫文件的問題,於是測試過將數據寫到excel中、sqlite數據庫中、csv文件中,結果都是不行。

也曾經以為是JVM的內存不夠,後來設置-Xms16m -Xmx32m,結果還是不行。

最後經過測試發現,居然是SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");這行代碼運行特別的緩慢。每次執行居然需要2~3s的時間,後來沒有辦法,使用了自己寫的時間對象和字符串對象的轉換函數。終於將這個問題解決了。這裡將代碼寫出來與大家共享。

package com.ps;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TimeFormatProcess {
    /*
     * 功能:將形如“ 2012-08-02 22:56:00”的字符串(字符串長度19)
     * 轉換為Calendar類,並返回一個Calendar對象
     * 作者:YOUYOU
     * 備注:該函數配合運行於Micro2440上的Embedded Linux
     * 因為SimpleDateFormat 類在Embedded Linux平台上響應
     * 太慢(2~3秒)
     */
    public static Calendar praseStringToCalendar(String strCalendar) {
        String strYear = null;
        String strMonth = null;
        String strDay = null;
        String strHour = null;
        String strMinute = null;
        String strSecond = null;
        int iYear = 0;
        int iMonth = 0;
        int iDay = 0;
        int iHour = 0;
        int iMinute = 0;
        int iSecond = 0;

        strYear = strCalendar.substring(0, 4);
        iYear = Integer.valueOf(strYear);
        // System.out.println(iYear);

        strMonth = strCalendar.substring(5, 7);
        iMonth = Integer.valueOf(strMonth);
//        System.out.println(iMonth);

        strDay = strCalendar.substring(8, 10);
        iDay = Integer.valueOf(strDay);
        // System.out.println(iDay);

        strHour = strCalendar.substring(11, 13);
        iHour = Integer.valueOf(strHour);
        // System.out.println(iHour);

        strMinute = strCalendar.substring(14, 16);
        iMinute = Integer.valueOf(strMinute);
        // System.out.println(iMinute);

        strSecond = strCalendar.substring(17);
        iSecond = Integer.valueOf(strSecond);

        // System.out.println(iSecond);

 


        Calendar calTemp = new GregorianCalendar(iYear, iMonth, iDay, iHour, iMinute, iSecond);
        return calTemp;
    }
   
    /*
     * 功能:將一個Calendar對象轉化為形如“ 2012-08-02 22:56:00”的
     * 字符串(字符串長度19),並返回一個String對象
     * 作者:YOUYOU
     * 備注:該函數配合運行於Micro2440上的Embedded Linux
     * 因為SimpleDateFormat 類在Embedded Linux平台上響應
     * 太慢(2~3秒)
     */
    public static String praseCanlendarToString(Calendar calTemp){
        Timestamp timestampTemp = new Timestamp(calTemp.getTimeInMillis());
        String strAllTimeTemp = timestampTemp.toString();
        String strTimeTemp = strAllTimeTemp.substring(0, 19);
        return strTimeTemp;
    }
}

Copyright © Linux教程網 All Rights Reserved