近期做了船体Tribon Vitesse程序迁徙到AM的测试,以组立图标注程序为例,经过简单修改,原来的程序可以在AM平台使用,但是发现速度慢了很多。于是让同事做了性能测试,对照Vitesse数据抽取部分,用AM二次开发语言PML重写。测试报告如下:
1.
本次测试目的为,通过对Python以及PML程序进行性能分析,考察Tribon二次开发程序迁移到AM的可行性,验证迁移后程序的使用性能,探讨AM二次开发适合采用哪种技术路线的问题。
2.
Tribon软件即将升级为AM,二次开发工作也面临很多新的考验,Tribon程序的迁移就是其中一个,Python和 PML程序二者之间选择哪一个,在前期有必要对它们进行相应的测试和比较,以期对今后的工作起到一定的指导和帮助作用。
3.
硬件环境: Windows XP Professional 2002 SP3,Windows 7 旗舰版SP4。
软件环境:Tribon M3 SP5,AM 12.1.SP4.17。
4.
整个测试过程的时间跨度为一周,状态为已完成。
5.
测试项:2
通过数:2
测试1:
将Tribon二次开发程序加载到AM船体模块运行,发现速度变慢,而且该程序中,数据提取占很大比重。
因此,分别用Python编写代码,GetPanelNames.py,用PML编写代码RunPythonScript.pmlobj和GetHPanelNames.pmlobj,二者实现同一功能,即单纯从AM数据库中提取Block VF2215下的所有Panel名称,循环提取1000次。在AM中分别运行RunPythonScript.pmlobj和GetHPanelNames.pmlobj两个程序,得到运行所用的时间。
测试数据如下:
如图1所示,Python程序运行所用时间为6分33秒。
如图2所示,PML程序运行所用时间为22秒。
测试2:
将Tribon二次开发组立图标注程序分别在Tribon和AM中运行,利用Python性能剖分工具Profile得到程序运行时间的相关数据,并保存到文件ConfigNoteCreate.prof,再利用pstats查看该结果,包括程序运行的总时间及每一个函数的运行时间。
测试数据如下:
如图3所示,程序在Tribon中运行的总时间为37.794秒,其中数据提取函数ExtractData的运行时间为7.927秒,线形提取函数GetLinetypes的运行时间为5.345秒。
如图4所示,程序在AM中运行的总时间为50.806秒,其中数据提取函数ExtractData的运行时间为11.501(5.274+3.805+2.422)秒,线形提取函数GetLinetypes的运行时间为11. 462秒。
6.
测试顺利通过,并得到以上测试数据,为了更明确地表达及比较数据,将测试2的数据制作成如下图表:
根据图表1和图表2所示,可以清晰的看到程序迁移前后性能数据的变化,由此初步得出以下结论:
l
l
l
经过多次测试表明,每次测试的时间会有差别,但总的来说,对于结论没有影响。
7.
根据上述测试结果,Python程序迁移到AM后,性能将会降低,建议用PML及C#重写程序。
GetPanelNames.py源代码:
import SdrBlock
def GetPanelsNames(block):
def test():
if __name__ == '__main__':
RunPythonScript.pmlobj源代码如下:
import 'marAPI'
handle any
endhandle
define object RunPythonScript
endobject
define method .RunPythonScript()
endmethod
GetHPanelNames.pmlobj源代码:
define object GetHPanelNames
endobject
define method .GetHPanelNames()
endmethod