不要追求绝对的公平,红尘之中没有公平而言,人活一世,难得糊涂。                                           it is no use doing what you like, you have got to like what you do.

J2ME性能优化之--方法和内存的评测

上一篇 / 下一篇  2007-04-12 10:28:53 / 个人分类:Mercury LoadRunner

本文是对J2ME游戏性能优化的初步探讨,有不足和错误之处还请及时指出。51Testing软件测试网IS/c w3s*Y4b
本文目的是使我们的游戏能够更快更稳定的运行,J2ME的有限处理能力和存储能力,使得节省设备资源就显得尤为重要。对代码进行优化和提速我个人觉得是一件恐怖的事情,嘿嘿。但当你解决代码的性能瓶颈,使游戏能够流畅运行又是一件很有成就感的事情。51Testing软件测试网P8_TH"d J2G"r
   本文共分两部分:第一部分介绍我们如何使用工具对方法和内存进行评测;第二部分和大家探讨些优化程序的方法。
U!Bn*T'G\u0 51Testing软件测试网 G0^A4n,H,u"}
   性能评测所要做的就是,在游戏运行的时候,记录代码每一部分对内存和处理器的使用情况。在评测的过程中,使我们知道什么地方内存使用过大,什么原因导致游戏运行变慢。
;h,Fb2v3HLl RY0   进行评测我们使用的是Sun公司J2MEWirelessToolkit(WTK2.2)。
*]~Mrz:b0J2MEWirelessToolkit提供了若干用于监视应用程序性能的工具。这些工具能够帮助您调试和优化代码。事件探查器列出应用程序中每个方法的使用频率和执行时间。51Testing软件测试网w4P lyi,F[j
内存监视器显示应用程序运行时内存的使用情况。
D/Xs&w(cR0网络监视器显示应用程序传送和接收的网络数据。网络监视器支持多种网络协议,包括HTTP、HTTPS、SMS和CBS。
W6px:j }(OG o0跟踪将低级信息输出到KToolbar控制台。51Testing软件测试网BrS _cS~ Ai.K
提示:监视功能可能会降低应用程序的执行速度。51Testing软件测试网m2ua V T-g~
 
/J,fY&Si1i3P0方法性能评测:
)[2j-W2k g0事件探查器跟踪应用程序中的每个方法。对某次特定的应用程序运行,事件探查器都计算出每个方法占用的时间,以及调用每个方法的次数。当应用程序结束运行并关闭仿真器后,将弹出事件探查器,您可以从中浏览所有的方法调用信息。51Testing软件测试网1NL/U Pk"O
要打开事件探查器,请从KToolbar菜单中选择“编辑”>“偏好...”。单击“监视”选项卡。(即Preferences)如果您想查看所有系统实现方法的配置处理信息,请选择“显示系统类”。否则,事件探查器将只显示包含对应用程序方法调用的系统方法。51Testing软件测试网 E!F"r4uAn"t
要打开时间探查器也可以这样:%WTK安装路径%--〉binàprefs.exe来启动工具。51Testing软件测试网-vm9B{8CN8`b
启动工具并选择“监视”,再勾选上事件探查器显示应该是这样:J2ME性能优化之--方法和内存的评测(图一)
I!Pi3U,E4y {y0 
:M3A7Wx.j4O0确定后,即可以。下次启动手机模拟器运行游戏结束后就会弹出事件探查器,并显示有关应用程序中所有方法调用的信息。
;ue7v U:z?,O9bP0提示:只要勾选了事件探查器每次模拟器结束的时候都会弹出,所以记得不用及时取消该功能,因为它影响模拟器的速度,内存监视器尤为明显。不论模拟器是在什么IDE中打开都会弹出方法事件探查器。
7\Nj%r4S4s? H'm]0
]6r| @5I ~C:Hq0J2ME性能优化之--方法和内存的评测(图二)点击查看大图
2S |3YOS)Q&KF-L md0 51Testing软件测试网 Y.[ pA0i {
事件探查器显示两种类型的信息:方法关系,显示在名为“调用图”的层次结构列表中。
6~E!y'{;[&xq@0事件探查器的右侧显示每个方法及其子代的执行时间和调用次数。51Testing软件测试网^&iO3[He
注-从仿真器中获得的配置处理值反映不出真实设备上的实际值。51Testing软件测试网;r4{S l,kf6o?dl
调用图显示方法调用的层次结构。调用其他方法的方法显示为文件夹。双击某个方法将其打开,并查看该方法所调用的方法。没有调用任何其他方法的方法显示为灰色圆圈。
S9bK-^?!mJ0您可以搜索某个特定类或方法名。单击“查找...”,并填写名称。搜索从调用图中的当前选择开始执行,直到最后。如果您想搜索完整的调用图,请在单击“查找”按钮之前选中“环绕”。51Testing软件测试网F\` fb4T(vB0s
在调用图中单击不同的节点时,事件探查器的右侧就会显示该节点方法的详细信息。
'ld2YmEE u`0事件探查器窗口的右侧显示有关方法的详细信息。您可以看到方法名、方法调用次数以及仿真器使用该方法所用的时间。执行时间有四种不同的描述方法:周期表示方法本身所用的处理器时间。
0\6D0lx`!]0%周期表示方法本身所用总执行时间的百分比。51Testing软件测试网z+E'dz0i!c(q~V^
周期(包括子类)表示某方法及其调用的方法所用的时间。
4L*\.crs$~4v0%周期(包括子类)表示某方法及其调用的方法所用的时间占总执行时间的百分比。51Testing软件测试网na WE*iZ l
单击任一列,按照该列进行排序。再次单击该列,可以在升序和降序之间切换。51Testing软件测试网;G'rq,r5R
右窗格显示调用图中当前所选节点中包含的方法。如果您想查看每个方法,请在调用图中单击节点。
3a\? C hSU.m'q0关于保存就不多说了。
5~T1l1S-ag;z+KQ0 
DI ~8m3\MyJ&H(Co0内存性能评测
B]ym8z,m/nK6Q0许多MIDP设备上的内存都不够用。J2MEWirelessToolkit中的内存监视器使您可以方便地检查应用程序内存的使用情况。您可以查看应用程序使用的内存总量,以及每个对象的内存使用情况详细列表。
)f \a&C?0要打开内存监视器,请从KToolbar菜单中选择“编辑”>“偏好...”,单击“监视”选项卡。选择“启用内存监视器”。
0P$ee5]$n(k0下次运行模拟器时,就会弹出内存监视器窗口,显示一幅随时间变化的应用程序内存使用情况图。由于创建的每个对象都被记录下来,因此内存监视器会使应用程序的启动速度变慢。最好不要同时勾选两种监视器。 
1DZ{C6Hbb(z!O9^0J2ME性能优化之--方法和内存的评测(图三)点击查看大图
C,} O!Dk.z+l1J0 J2ME性能优化之--方法和内存的评测(图四)点击查看大图51Testing软件测试网J iEcdI$l?-A
 51Testing软件测试网7i%m0V z:G3z'H+? NO
您将看到包含以下列的一个表:名字。对象类名称。51Testing软件测试网E Isq%|(vE]
存活。实例数目。有些可以进行资源回收。51Testing软件测试网KZ3[~-X&R9^['_+C
总共。应用程序开始运行以来所分配的对象总数。51Testing软件测试网YHy r*I_|
总计。对象使用的内存总量。51Testing软件测试网@c&j6C.Bg
平均。对象的平均大小,由总计大小除以活动实例数目得到。
*JsaNjn I0单击任一列标题,按照该列进行排序。51Testing软件测试网1v @$I*^MZETI!J
通过从内存监视器窗口菜单中选择“查看”>“查找...”,可以搜索某个特定的类名。特别注意内存使用超出当前分配的堆(图像中红色虚线表示)的情况。
XIs ^;Mk2Z/P4mJ0关于方法和内存的评测就到这里,希望大家在使用中的经验和心得能够共同交流。WTK中还有其他好用的功能哦。下一部分讨论下j2me的调试方法和优化方法。51Testing软件测试网V%p1?F1pF k

TAG:

子木清风 引用 删除 Spark.lee   /   2007-04-13 14:32:50
不太清楚这个东西我也是刚刚接触 还没有搞明白的那
我现在都不知道改如何搞了 郁闷中!!!!
老婆婆 引用 删除 annayin   /   2007-04-13 10:44:35
事件探查器是啥东东?只有java才有吗?
 

评分:0

我来说两句

Open Toolbar