[发明专利]程序优化方法及装置在审
申请号: | 201610210366.0 | 申请日: | 2016-04-06 |
公开(公告)号: | CN107273175A | 公开(公告)日: | 2017-10-20 |
发明(设计)人: | 王洪虎;高翔;胡庆海 | 申请(专利权)人: | 龙芯中科技术有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京同立钧成知识产权代理有限公司11205 | 代理人: | 陶敏,刘芳 |
地址: | 100095 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 优化 方法 装置 | ||
技术领域
本发明涉及计算机技术,尤其涉及一种程序优化方法及装置。
背景技术
目前的计算机系统能够实现多种复杂功能,例如绘图功能。为实现这些复杂功能,其对应的计算机程序在运行时就需要执行很多复杂的运算。例如,绘图功能对应的计算机程序在完成一个椭圆绘制时,就会进行频繁的循环加减法计算。
现有技术中,实现上述复杂功能的计算机程序绝大多数都使用一些简单易学的高级语言编写,例如C语言、C++语言等。这些高级语言在执行时,均采用单指令单数据的方式实现,即执行的每一条指令对应处理一个数据。
但是,现有技术中的计算机程序在处理复杂运算时的处理效率低下。
发明内容
本发明提供一种程序优化方法及装置,用于解决现有技术中计算机程序在处理复杂运算时处理效率低下的问题。
本发明第一方面提供一种程序优化方法,包括:
根据待优化的计算机程序获得程序执行结果,所述待优化的计算机程序使用第一编程语言编写;
根据所述程序执行结果,检测所述待优化的计算机程序中的热点程序;
将所述热点程序替换为优化程序,形成优化后的所述计算机程序;其中,所述优化程序的功能与所述热点程序的功能相同,所述优化程序使用第二编程语言编写,所述第二编程语言的执行效率大于所述第一编程语言的执行效率。
进一步地,所述将所述热点程序替换为优化程序,形成优化后的所述计算机程序,包括:
删除所述热点程序;
在所述待优化的计算机程序的第一位置插入第二编程语言封装程序,其中,所述第一位置为所述热点程序在所述待优化的计算机程序中的位置,所述第二编程语言封装程序包括程序起始标识以及程序结束标识,所述第二编程语言封装程序使用第一编程语言编写;
将所述优化程序增加到所述程序起始标识和所述程序结束标识之间。
进一步地,所述根据待优化的计算机程序获得程序执行结果,包括:
运行所述待优化的计算机程序对应的预设测试用例,获得所述程序执行结果。
进一步地,所述根据所述程序执行结果,检测所述待优化的计算机程序中的热点程序,包括:
根据所述程序执行结果,使用性能分析工具检测所述待优化的计算机程序中的热点程序。
进一步地,所述第二编程语言为支持单指令多数据SIMD的编程语言。
进一步地,所述第二编程语言为汇编语言,所述第一编程语言为可以封装所述第二编程语言的编程语言。
进一步地,若所述热点程序为执行循环数学计算功能的程序,则所述优化程序中至少包括内存读取语句和执行数学计算语句;其中,所述内存读取语句和所述执行数学计算语句为所述SIMD语句,所述内存读取语句用于每次从内存中读取64位或128位数据,并将读取到的所述64位或128位数据存储到寄存器中,所述执行数据计算语句用于对所述64位或128位数据进行64位运算。
本发明第二方面提供一种程序优化装置,包括:
执行模块,用于根据待优化的计算机程序获得程序执行结果,所述待优化的计算机程序使用第一编程语言编写;
检测模块,用于根据所述程序执行结果,检测所述待优化的计算机程序中的热点程序;
替换模块,用于将所述热点程序替换为优化程序,形成优化后的所述计算机程序;其中,所述优化程序的功能与所述热点程序的功能相同,所述优化程序使用第二编程语言编写,所述第二编程语言的执行效率大于所述第一 编程语言的执行效率。
进一步地,所述替换模块包括:
删除单元,用于删除所述热点程序;
插入单元,用于在所述待优化的计算机程序的第一位置插入第二编程语言封装程序,其中,所述第一位置为所述热点程序在所述待优化的计算机程序中的位置,所述第二编程语言封装程序包括程序起始标识以及程序结束标识,所述第二编程语言封装程序使用第一编程语言编写;
增加单元,用于将所述优化程序增加到所述程序起始标识和所述程序结束标识之间。
进一步地,所述执行模块具体用于:运行所述待优化的计算机程序对应的预设测试用例,获得所述程序执行结果。
进一步地,所述检测模块具体用于:根据所述程序执行结果,使用性能分析工具检测所述待优化的计算机程序中的热点程序。
进一步地,所述优化程序中包括单指令多数据SIMD语句。
进一步地,所述第二编程语言为汇编语言,所述第一编程语言为可以封装所述第二编程语言的编程语言。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科技术有限公司,未经龙芯中科技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610210366.0/2.html,转载请声明来源钻瓜专利网。