基于深度学习的代码重构后性能预测方法技术

技术编号:38841599 阅读:22 留言:0更新日期:2023-09-17 09:55
本发明专利技术涉及一种基于深度学习的代码重构后性能预测方法,采用如下步骤:一.对重构前后的Java开源项目进行参数处理及特征提取;二.对重构前后的Java开源项目进行性能测试,得到平均执行时间;三.利用主成分分析PCA剔除跟标签相关性无关的特征;四.利用改进的深度前馈神经网络FNN模型预测重构后Java开源项目执行时间;五.对预测的执行时间结果进行正确性评估;本发明专利技术通过Java开源项目的自动重构,文本、度量、语义等信息的处理与提取,性能测试,主成分分析PCA特征优化,改进的深度前馈神经网络FNN的相互配合,完成对重构后Java开源项目的执行时间预测。执行时间预测。执行时间预测。

【技术实现步骤摘要】
基于深度学习的代码重构后性能预测方法


[0001]本专利技术涉及一种基于深度学习的代码重构后性能预测方法,属于计算机软件维护和演化领域。

技术介绍

[0002]重构是一种改善现有代码质量和可维护性的技术活动,它对于提高软件开发效率、降低维护成本以及适应需求变化都至关重要。以往的工作重在向软件开发者推荐重构操作以解决方案的方法,且主要以可维护性指标来指导。这些方法对重构其他非功能需求的关注很少,如重构后对执行时间的影响。
[0003]目前研究人员大多会关注重构在大多数情况下对执行时间的影响好坏,通过对一定数量的开源的重构后项目进行性能测试分析得出结论;但却没有研究人员预测实施某种重构后对当前的项目可能造成的执行时间变化,而这一变化的好坏对开发人员是否选择这一重构具有指导意义。

技术实现思路

[0004]本专利技术所要解决的技术问题是提供一种对实施某种重构操作的Java开源项目执行时间的预测,评估和验证预测的执行时间准确度的基于深度学习的代码重构后性能预测方法。
[0005]本专利技术采用如下技术方案:
[0006]本专利技术基于深度学习的代码重构后性能预测方法,采用如下步骤:
[0007]步骤一、对重构前后的Java开源项目进行参数处理及特征提取;
[0008]步骤二、对重构前后的Java开源项目进行性能测试,得到平均执行时间;
[0009]步骤三、将参数处理及特征提取和执行时间检测形成的数据集利用主成分分析PCA剔除跟标签相关性无关的特征;
[0010]步骤四、利用改进的深度前馈神经网络FNN模型预测重构后Java开源项目执行时间;
[0011]步骤五、对预测的执行时间结果进行正确性评估。
[0012]本专利技术Java开源项目中的MoveMethod、ExtractMethod和InlineMethod操作对执行时间的影响参数不同,具体的:
[0013]MoveMethod重构操作对执行时间有影响的参数有方法位置、代码长度、耦合度和内聚度;ExtractMethod重构操作对执行时间有影响的参数有方法的调用、参数的传递和复杂度;InlineMethod重构操作对执行时间有影响的参数有内联方法的调用点和代码重复度。
[0014]本专利技术文本、度量和语义,采用CK、SonarQube对Java开源项目的代码进行参数提取;并将其中的文本及语义信息,按照规则将字符串型转换为数值型,结合度量信息作为数据集的特征。
[0015]本专利技术步骤二中的性能测试选取与JavaMicrobenchmarkingHarness有依赖关系的Java开源项目,利用JavaMicrobenchmarkingHarness对待重构的代码段建立系统快照,记录每次的执行时间,得到平均执行时间作为标签构建数据集。
[0016]本专利技术步骤三中的主成分分析PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,找到能够最大程度地保留数据方差的低维表示,以剔除对执行时间影响小的特征,实现对特征向量的降维。
[0017]本专利技术步骤四中改进的深度前馈神经网络FNN模型加入了残差连接以及对超参数进行调优,实现对重构后项目的执行时间预测;
[0018]具体方法如下:按照方法的调用、参数的传递和复杂度之间的交互作用对深度前馈神经网络FNN模型进行分块串行构建,每一块均是一个小型深度前馈神经网络FNN模型;为每块的每层神经元数设置一个固定数;层数、学习率及L1正则化参数的选取,采用先在一个固定的层数下,选择一组学习率和L1正则化参数进行训练,并在验证数据集上评估预测误差,确定最优的学习率和L1正则化参数组合,确定后以此为基准搜索最佳层数,在每个层数下进行训练和评估选择最佳的层数;在每块深度神经网络FNN中加入残差连接将输入信息与输出信息相加,将此结果应用ReLU函数得特征交互信息和预测结果;将每块所得的执行时间预测结果相加即为最终的预测结果。
[0019]本专利技术步骤五中的正确性评估的具体过程为:模型预测的执行时间与真实的执行时间进行比较,计算均方误差,其值越小表明预测值与真实值越接近。
[0020]本专利技术所述规则为:根据有此信息设为1,否则为0,根据含有的信息数量设为对应的数值。
[0021]本专利技术利用协方差矩阵最大程度地保留数据方差的低维表示,具体计算公式如下:
[0022]cov(X,Y)=Σ((X_i

mean(X))*(Y_i

mean(Y)))/(n

1);
[0023]式中,cov(X,Y)表示X和Y之间的协方差,X_i和Y_i分别表示X和Y的第i个样本值,mean(X)和mean(Y)分别表示X和Y的均值,n表示样本数量。
[0024]本专利技术所述均方误差通过如下公式计算:
[0025]MSE=(1/n)*Σ(y_pred

y_true)^2;
[0026]其中,n是样本数量,y_pred是预测值,y_true是真实值,以此衡量模型预测效果。
[0027]本专利技术积极效果如下:本专利技术通过Java开源项目extractmethod、inline method和/或movemethod的自动重构,文本、度量、语义等信息的处理与提取,性能测试,主成分分析PCA特征优化,改进的深度前馈神经网络FNN的相互配合,完成项目自动重构,以此提取重构前后项目的特征变化,实现对重构后项目执行时间的预测。
附图说明
[0028]附图1为本专利技术方法结构框架结构示意图;
[0029]附图2为本专利技术流程结构示意图;
[0030]附图3为本专利技术方法参数处理与特征提取结构示意图;
[0031]附图4为本专利技术方法改进的深度前馈神经网络FNN模型框图。
具体实施方式
[0032]如附图1、2所示,本专利技术基于深度学习的代码重构后性能预测方法,以重构前项目作为输入,针对某种特定的重构操作对其实现自动重构,得到重构后的项目;对重构前后的项目进行文本、度量、语义等信息的处理与提取,执行时间的检测,以此构建数据集;利用主成分分析PCA对特征进行优化,去除跟标签相关性不大的特征;采用改进的深度前馈神经网络FNN模型对处理后的数据集进行训练验证,最终实现对未实施代码重构的项目的执行时间预测;
[0033]具体采用如下步骤:
[0034]步骤一、对重构前后的Java开源项目进行参数处理及特征提取;
[0035]步骤二、对重构前后的Java开源项目进行性能测试,得到平均执行时间;
[0036]利用JMH(JMH是JavaMicrobenchmarkHarness的缩写,是一个Java语言的基准测试框架,用于测量Java代码的性能)进行基准测试,通过对Mode、Warmup、iterations等参数的设置以获得准确的执行时间;
[0037]附图3描述了参数处理及特征提取方法;由于不同的重本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于深度学习的代码重构后性能预测方法,其特征在于,采用如下步骤:步骤一、对重构前后的Java开源项目进行参数处理及特征提取;步骤二、对重构前后的Java开源项目进行性能测试,得到平均执行时间;步骤三、将参数处理及特征提取和执行时间检测形成的数据集利用主成分分析PCA剔除跟标签相关性无关的特征;步骤四、利用改进的深度前馈神经网络FNN模型预测重构后Java开源项目执行时间;步骤五、对预测的执行时间结果进行正确性评估。2.根据权利要求1所述的基于深度学习的代码重构后性能预测方法,其特征在于,Java开源项目中的MoveMethod、ExtractMethod和InlineMethod操作对执行时间的影响参数不同,具体的:MoveMethod重构操作对执行时间有影响的参数有方法位置、代码长度、耦合度和内聚度;ExtractMethod重构操作对执行时间有影响的参数有方法的调用、参数的传递和复杂度;InlineMethod重构操作对执行时间有影响的参数有内联方法的调用点和代码重复度。3.根据权利要求1所述的基于深度学习的代码重构后性能预测方法,其特征在于,步骤一中的参数包括:文本、度量和语义,采用CK、SonarQube对Java开源项目的代码进行参数提取;并将其中的文本及语义信息,按照规则将字符串型转换为数值型,结合度量信息作为数据集的特征。4.根据权利要求1所述的基于深度学习的代码重构后性能预测方法,其特征在于,步骤二中的性能测试选取与JavaMicrobenchmarkingHarness有依赖关系的Java开源项目,利用JavaMicrobenchmarkingHarness对待重构的代码段建立系统快照,记录每次的执行时间,得到平均执行时间作为标签构建数据集。5.根据权利要求1所述的基于深度学习的代码重构后性能预测方法,其特征在于,步骤三中的主成分分析PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,找到能够最大程度地保留数据方差的低维表示,以剔除对执行时间影响小的特征,实现对特征向量的降维。6.根据权利要求2所述的基于深度学习的代码重构后性能预测方法,其特征在于,步骤四中改...

【专利技术属性】
技术研发人员:张杨路一帆
申请(专利权)人:河北科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1