本发明专利技术公开了一种代码识别方法、装置、计算设备和计算机存储介质,其中方法包括:获取代码执行时的目标方法的调用信息;根据所述目标方法的调用信息和执行结果,生成包含目标方法的调用树的拓扑图;根据所述拓扑图,利用预设的识别模型,识别出所述代码中能够转为并发执行的目标方法。本发明专利技术能够分析出可以以较大概率进行串行转并发方式执行的代码,为开发人员提供一种合理可行、并且能快速落地的可并发执行代码的识别和分析方案,从而减少项目实施过程中的风险,帮助优化线上产品的性能,并且克服了现有方案对开发人员经验技能要求较高以及专业分析工具缺失等突出弊端。以及专业分析工具缺失等突出弊端。以及专业分析工具缺失等突出弊端。
【技术实现步骤摘要】
代码识别方法、装置、计算设备和计算机可读存储介质
[0001]本专利技术涉及计算机应用
,具体涉及一种代码识别方法、装置、计算设备和计算机可读存储介质。
技术介绍
[0002]在软件项目实施过程中,产品的性能和高并发支持往往是开发人员需要考虑的重要环节。开发人员在设计和开发代码的时候,往往因为项目迭代周期过短,或者因为自身经验的不足而疏于代码性能的优化。在大中型项目中,其代码量往往在数十万规模以上,如果能有效并且快速的帮助开发人员,特别是初中级开发人员,辅助其提前发现性能瓶颈并给出相关优化建议,这对于提升后续线上产品的性能将十分有益。
[0003]现有的方案往往依靠有经验的开发人员通过code review(代码审查)工具帮助初中级开发人员发现问题,或者在系统或性能测试阶段,通过相关测试用例发现性能瓶颈;开发人员再回头检查瓶颈原因,重构相应代码,这样不仅开发成本上升,同时也给将要上线的产品带来一定的性能隐患;同时,现有IDE(集成开发环境)中的代码扫描工具针对提前发现性能瓶颈等问题领域还处于空白,没有现成的分析工具可以利用。
技术实现思路
[0004]鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的代码识别方法、装置、计算设备和计算机可读存储介质。
[0005]根据本专利技术的一个方面,提供了一种代码识别方法,所述方法包括:
[0006]获取代码执行时的目标方法的调用信息;
[0007]根据所述目标方法的调用信息和执行结果,生成包含目标方法的调用树的拓扑图;
[0008]根据所述拓扑图,利用预设的识别模型,识别出所述代码中能够转为并发执行的目标方法。
[0009]可选的,获取代码执行时的目标方法的调用信息之前包括:
[0010]利用切面编程方式,在所述代码对应的字节码中植入目标方法调用前和调用后的增强逻辑;
[0011]其中,所述目标方法包括业务核心代码中的方法和/或与磁盘或网络之间输入输出时调用的方法。
[0012]可选的,获取代码执行时的目标方法的调用信息具体包括:
[0013]获取所述目标方法的调用时长、入参变量信息、出参变量信息和/或目标方法元信息。
[0014]可选的,根据所述拓扑图,利用预设的识别模型,识别出所述代码中能够转为并发执行的目标方法包括:
[0015]在所述拓扑图中,选取执行耗时不小于预设值的方法和/或与磁盘或网络之间输
入输出时调用的方法,构成串行转并发目标方法集合;
[0016]以串行转并发目标方法集合为自变量,求解在约束条件下的所述识别模型的最优解或近似最优解;
[0017]根据所述最优解或近似最优解,识别出所述代码中能够转为并发的目标方法。
[0018]可选的,在所述拓扑图中,选取执行耗时不小于预设值的方法和/或与磁盘或网络之间输入输出时调用的方法,构成串行转并发目标方法集合进一步包括:
[0019]确定输入输出时调用的方法对应节点的最邻近共同祖先节点,根据所述祖先节点的子节点形成所述串行转并发目标方法集合。
[0020]可选的,所述识别模型为规划模型,则求解在约束条件下的所述识别模型的最优解或近似最优解进一步包括:
[0021]利用模拟退火算法,求解在约束条件下的所述规划模型的最优解或近似最优解。
[0022]可选的,所述模拟退火算法为改进的模拟退火算法,包括:分层次产生可行解邻域内的待定解;和/或,根据第一部分贪心和第二部分随机化的策略产生初始解;
[0023]所述规划模型包括:分别计算各个串行转并发目标方法集合与该串行转并发目标方法集合实现转化后预估收益的乘积,然后求解各个乘积之和的最大值;
[0024]所述约束条件包括:调用时长约束和/或CPU资源占用约束。
[0025]根据本专利技术的另一方面,提供了一种代码识别装置,所述装置包括:
[0026]获取模块,适于获取代码执行时的目标方法的调用信息;
[0027]生成模块,适于根据所述目标方法的调用信息和执行结果,生成包含目标方法的调用树的拓扑图;
[0028]识别模块,适于根据所述拓扑图,利用预设的识别模型,识别出所述代码中能够转为并发执行的目标方法。
[0029]根据本专利技术的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
[0030]所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述代码识别方法对应的操作。
[0031]根据本专利技术的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述代码识别方法对应的操作。
[0032]根据本专利技术的代码识别方案,能够分析出可以以较大概率进行串行转并发方式执行的目标方法对应的代码,通过为开发人员提供一种合理可行、并且能快速落地的可并发执行代码的识别和分析方案,从而减少项目实施过程中的风险,并帮助优化线上产品的性能,并且克服了现有方案对开发人员经验技能要求较高以及专业分析工具缺失等突出弊端。
[0033]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0034]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通
技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0035]图1示出了本专利技术一实施例提供的代码识别方法流程图;
[0036]图2示出了本专利技术一实施例提供的基于字节码级AOP增强逻辑获取方法执行信息的流程图;
[0037]图3示出了本专利技术一实施例提供的方法调用树的结构示意图;
[0038]图4示出了本专利技术另一实施例提供的代码识别方法的流程图;
[0039]图5示出了本专利技术一实施例提供的代码识别装置的结构示意图;
[0040]图6示出了本专利技术一实施例提供的计算设备的结构示意图。
具体实施方式
[0041]下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术的范围完整的传达给本领域的技术人员。
[0042]图1示出了本专利技术代码识别方法实施例的流程图,该方法应用于计算设备中。所述计算设备为安装有使用线程池的计算机程序的智能终端设备、计算机设备和/或云,所述智能终端设备包括但不限于智能手机、PAD;所述计算机设备包括但不限于个人计算机、笔记本电脑、工本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种代码识别方法,所述方法包括:获取代码执行时的目标方法的调用信息;根据所述目标方法的调用信息和执行结果,生成包含目标方法的调用树的拓扑图;根据所述拓扑图,利用预设的识别模型,识别出所述代码中能够转为并发执行的目标方法。2.根据权利要求1所述的方法,其特征在于,获取代码执行时的目标方法的调用信息之前包括:利用切面编程方式,在所述代码对应的字节码中植入目标方法调用前和调用后的增强逻辑;其中,所述目标方法包括业务核心代码中的方法和/或与磁盘或网络之间输入输出时调用的方法。3.根据权利要求1所述的方法,其特征在于,获取代码执行时的目标方法的调用信息具体包括:获取所述目标方法的调用时长、入参变量信息、出参变量信息和/或目标方法元信息。4.根据权利要求1
‑
3中任一项所述的方法,其特征在于,根据所述拓扑图,利用预设的识别模型,识别出所述代码中能够转为并发执行的目标方法包括:在所述拓扑图中,选取执行耗时不小于预设值的方法和/或与磁盘或网络之间输入输出时调用的方法,构成串行转并发目标方法集合;以串行转并发目标方法集合为自变量,求解在约束条件下的所述识别模型的最优解或近似最优解;根据所述最优解或近似最优解,识别出所述代码中能够转为并发的目标方法。5.根据权利要求4所述的方法,其特征在于,在所述拓扑图中,选取执行耗时不小于预设值的方法和/或与磁盘或网络之间输入输出时调用的方法,构成串行转并发目标方法集合进一步包括:确定输入输出时调用的方法对应节点的最邻近共同祖先节点,根据所述祖先节点的子节点形成所述串...
【专利技术属性】
技术研发人员:乔磊,
申请(专利权)人:中国移动通信集团有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。