J2ME程序开发要注意函数调用对性能的影响
2008-05-11 10:34
337 查看
前段时间,由于我以前有J2EE的开发经验,老大安排我去写一个基于J2ME开发的手机移动监控程序。领到任务,买了本书看看就开始动手,本着J2EE的开发经验,比较注重程序结构和层次的划分,尽量降低模块间的耦合程度,程序很快就开发出来,但在测试过程当中,总是比原来使用C语言写的手机移动视频监控程序的效率要差很多,虽然Java的效率低一点正常,但还不至于低这么多的吧?浏览视频模块的性能是关键,要通过三个步骤才能够把一帧画面显示到手机屏幕上:1、帧解析,必须首先把网络接收到的数据进行分析,把完整一帧的数据传递给解码模块进行解码;2、把MPEG4的视频帧解码为YUV格式的视频帧;3、把视频帧YUV格式转换为RGB格式。由于解码库是另外的开发人员开发的,我没有源代码,只有从第一步和第三步着手进行优化。
刚开始,我一直集中精力在改进处理逻辑上,尽量减少处理路径,但这种做法收到的效果很不明显,基本上可以忽略不计;我也明白调用函数会引起效率的降低,但我一直以为这个损失的效率应该是很低的,也可以忽略不计,所以就没有过多的关注,直到有一天跟部门经理讨论时,他让我试把YUV to RGB的代码的函数调用都写在一起,没想到经过这么一改,性能提高不少,从原来每一帧的YUV to RGB需要耗时200多ms降为50多ms,让我大吃一惊。
因此,在J2ME开发中,如果在一些实时性要求很强的模块,尽量避免函数的调用,可以牺牲代码的可读性来换取更短的运行时间。
刚开始,我一直集中精力在改进处理逻辑上,尽量减少处理路径,但这种做法收到的效果很不明显,基本上可以忽略不计;我也明白调用函数会引起效率的降低,但我一直以为这个损失的效率应该是很低的,也可以忽略不计,所以就没有过多的关注,直到有一天跟部门经理讨论时,他让我试把YUV to RGB的代码的函数调用都写在一起,没想到经过这么一改,性能提高不少,从原来每一帧的YUV to RGB需要耗时200多ms降为50多ms,让我大吃一惊。
因此,在J2ME开发中,如果在一些实时性要求很强的模块,尽量避免函数的调用,可以牺牲代码的可读性来换取更短的运行时间。
相关文章推荐
- 程序性能调优之 怎样使用gprof和oprofile来分析 linux程序的性能(每个函数的调用次数与耗时)
- J2ME手机程序开发中的九大注意要点
- 使用jvisualvm监控JAVA程序,注意对程序性能的影响
- (转)程序性能调优之 怎样使用gprof和oprofile来分析 linux程序的性能(每个函数的调用次数与耗时)
- 程序中使用now()函数对性能的影响
- VC开发TUXEDO 调用 DLL程序的注意点
- Java程序性能优化总结--------变量和函数调用篇
- Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)
- 怎样使用gprof和oprofile来分析 linux程序的性能(每个函数的调用次数与耗时)
- 程序性能调优之 怎样使用gprof和oprofile来分析 linux程序的性能(每个函数的调用次数与耗时)
- VC中程序调用Js自定义函数的注意事项
- VC中程序调用Js自定义函数的注意事项
- 使用gprof 或 valgrind查看函数调用频率及程序性能瓶颈调试
- VC中程序调用Js自定义函数的注意事项
- J2ME 程序开发注意要点
- 函数指针使用与直接函数调用对程序代码大小的影响
- 关于程序修改时(修改被调用的SQL时),注意关联性(也可以说是影响范围)。
- 在别人的程序的任意位置加上调用自己函数的代码,且不影响原程序执行的方法
- flash builder 4.5.1 手机开发调用WEBSERVICE注意事项
- [开发技巧] Java调用可执行程序和批处理命令