友善之臂Micro2440下的Embedded Linux中Java遇到的问题

2014-11-24 10:58:35 来源: 作者: 浏览: 0

最近在做一个项目中使用了友善之臂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;
}
}


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: