最近在做一个项目中使用了友善之臂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;
}
}
上一篇:友善之臂Micro2440下的Embedded Linux的定时reboot
下一篇:root_qtopia-20100108.tar.gz与tslib-1.4下载
推荐阅读最新更新时间:2026-03-21 19:09
- Er3105Di 500Ma宽输入电压同步降压稳压器内部默认参数选择典型应用示意图
- 使用 LTC2377CMS-16、16 位、500ksps、低功耗 SAR ADC 的典型应用
- L7806C负输出电压电路的典型应用
- LT3959 的典型应用 - 具有 6A、40V 开关的宽输入电压范围升压/SEPIC/反相转换器
- LPS33W适配器板,标准DIL24插座
- 使用 Analog Devices 的 LT3470AIDDB 的参考设计
- MC33364通用输入电池充电器典型应用电路
- AM2G-2405SH30Z 5V 2W DC/DC 转换器的典型应用
- 用于电池测试解决方案的 ADP1972 降压或升压、PWM 控制器的典型应用
- LT1121IS8-3.3 5V 低压差稳压器的典型应用电路,用于具有关断的电池供电电源

Java SE Runtime Environment 8u471
Linux技术手册
智能机械臂
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号