CN115185615B - 基于内存空间优化的插件程序调用方法 - Google Patents
基于内存空间优化的插件程序调用方法 Download PDFInfo
- Publication number
- CN115185615B CN115185615B CN202211099753.3A CN202211099753A CN115185615B CN 115185615 B CN115185615 B CN 115185615B CN 202211099753 A CN202211099753 A CN 202211099753A CN 115185615 B CN115185615 B CN 115185615B
- Authority
- CN
- China
- Prior art keywords
- subprogram
- space required
- storage
- storage space
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种基于内存空间优化的插件程序调用方法,包括,获取主程序中的调用指令信息;评估调用指令信息对应的子程序运行所需存储空间,并对子程序运行所需存储空间进行修正和校正;确定主程序在运行过程中所需的主存空间,并根据所述主存空间确定主存储器内的剩余空间;根据所述剩余空间与所需存储空间的大小关系设定所述子程序的存储优先级,根据子程序被调用的次数N对各子程序的存储优先级进行调整,并根据子程序功能对系统稳定性的影响值P对调整后的子程序的存储优先级进行修正。本发明通过提供一种基于内存空间优化的插件程序调用方法,对子程序的存储优先级精确调整,从而有效提高主程序运行稳定性。
Description
技术领域
本发明涉及软件技术领域,尤其涉及一种基于内存空间优化的插件程序调用方法。
背景技术
处理器内的子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般处理器首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)调用子程序过程。
但是在子程序调用过程中,通常会将子程序存储在主程序相同的存储空间内,便于调用,但是在实际应用中,若是调用的子程序过多,则会大大增加存储各个子程序的存储空间,因此且使得主程序的运行速度变慢,影响信息处理效率。
发明内容
为此,本发明提供一种基于内存空间优化的插件程序调用方法,可以解决主程序运行稳定性差的问题。
为实现上述目的,本发明提供一种基于内存空间优化的插件程序调用方法,包括,
获取主程序中的调用指令信息;
根据调用指令信息对应的子程序代码行数S评估该子程序运行所需存储空间,并根据该子程序代码中空行数量W对评估后的子程序运行所需存储空间进行修正,修正完成后,根据子程序代码行的平均长度U对修正后子程序运行所需存储空间进行校正;
确定主程序在运行过程中所需的主存空间,并根据所述主存空间确定主存储器内的剩余空间;
根据所述剩余空间与所需存储空间的大小关系设定所述子程序的存储优先级,设定完成后,根据子程序被调用的次数N对各子程序的存储优先级进行调整,并根据子程序功能对系统稳定性的影响值P对调整后的子程序的存储优先级进行修正。进一步地,在获取主程序中的调用指令信息时,获取指令信息的操作码和地址码,将每一个操作码作为一个调用指令信息。
进一步地,在评估调用指令信息对应的子程序运行所需存储空间时,获取调用指令信息对应的子程序代码行数S,并将其与各预设子程序代码行数进行比对,并根据比对结果评估调用指令信息对应的子程序运行所需存储空间,其中,
当S≤S1时,评估该子程序运行所需存储空间为C1;
当S1<S<S2时,评估该子程序运行所需存储空间为C2;
当S≥S2时,评估该子程序运行所需存储空间为C3;
其中,S1为第一预设子程序代码行数,S2第二预设子程序代码行数,S1<S2,子程序运行所需存储空间大小关系为C1<C2<C3。
进一步地,在对评估后的子程序运行所需存储空间进行修正时,获取调用指令信息对应的子程序代码行数S中的空行数量W,并将该空行数量W与预设空行数量W0进行比对,并根据比对结果对评估后的子程序运行所需存储空间进行修正,其中,
当0<W<W0时,选取第一修正系数k1对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,0.95<k1<1;
当W≥W0时,选取第二校正系数k2对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,k2=k1-k1×(W-W0)/W;
其中,当选取第i校正系数ki对评估后的子程序运行所需存储空间进行修正时,设定i=1,2,若评估后的子程序运行所需存储空间为C1,设定修正后的子程序运行所需存储空间为C1’,设定C1’= C1×ki,若评估后的子程序运行所需存储空间为C2,设定修正后的子程序运行所需存储空间为C2’,设定C2’= C2×ki,若评估后的子程序运行所需存储空间为C3,设定修正后的子程序运行所需存储空间为C3’,设定C3’= C3×ki。
进一步地,在对修正后子程序运行所需存储空间进行校正时,获取子程序代码行的平均长度U,并将其与各预设代码行的平均长度进行比对,并根据比对结果对修正后子程序运行所需存储空间进行校正,其中,
当U≤U1时,选取第一校正系数g1对修正后子程序运行所需存储空间进行校正,以减小修正后子程序运行所需存储空间,设定0.8<g1<1;
当U1<U<U2时,不进行校正;
当U≥U2时,选取第二校正系数g2对修正后子程序运行所需存储空间进行校正,以增大修正后子程序运行所需存储空间,设定1<g2<1.26;
其中,U1为第一预设代码行的平均长度,U2为第二预设代码行的平均长度,U1<U2,当选取第i校正系数gi对修正后子程序运行所需存储空间进行校正时,设定i=1,2,若修正后子程序运行所需存储空间为C1’时,设定校正后的子程序运行所需存储空间为C1’’,设定C1’’=C1’×gi,若修正后子程序运行所需存储空间为C2’时,设定校正后的子程序运行所需存储空间为C2’’,设定C2’’=C2’×gi,若修正后子程序运行所需存储空间为C3’时,设定校正后的子程序运行所需存储空间为C3’’,设定C3’’=C3’×gi。
进一步地,确定主程序在运行过程中所需的主存空间时,获取主程序的代码行数A,并将其与预设主程序的代码行数A0进行比对,并根据比对结果确定主程序在运行过程中所需的主存空间,其中,
当A<A0时,确定主程序在运行过程中所需的主存空间为R1;
当A≥A0时,确定主程序在运行过程中所需的主存空间为R2;
其中,R1<R2。
进一步地,在根据所述主存空间确定主存储器内的剩余空间L时,设定L=Z-Ri,i=1,2,式中Z为主存储器空间,Ri为主程序在运行过程中所需的主存空间。
进一步地,在设定所述子程序的存储优先级时,获取剩余空间L,并将剩余空间L与校正后的各子程序运行所需存储空间进行比对,并根据比对结果设定子程序的存储优先级,其中,
当L>C3’’时,将该子程序的存储优先级设定为一级;
当L>C2’’时,将该子程序的存储优先级设定为二级;
当L>C1’’时,将该子程序的存储优先级设定为三级;
其中,存储优先级的大小关系为一级>二级>三级,级别大的优先。
进一步地,在调整所述子程序的存储优先级时,获取各子程序被调用的次数N,并将其与预设被调用的次数N0进行比对,并根据比对结果对各子程序的存储优先级进行调整,其中,
当N>N0时,若该子程序的存储优先级为一级,不进行调整;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级调整为二级;
当N≤N0时,若该子程序的存储优先级为一级,将该子程序的存储优先级调整为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为三级;若该子程序的存储优先级为三级,不进行调整。
进一步地,在修正所述子程序的存储优先级时,获取各子程序功能对系统稳定性的影响值P,并根据预设影响值Pb,计算影响差值△P,设定△P=|Pb-P|,并将该影响差值△P与标准影响差值△Pstd进行比对,并根据比对结果对调整后的子程序的存储优先级进行修正,其中,
当△P≥△Pstd时,若该子程序的存储优先级设定为一级,不进行修正;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级修正为二级;
当△P<△Pstd时,若该子程序的存储优先级为一级,将该子程序的存储优先级修正为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为三级;若该子程序的存储优先级为三级,不进行修正。
与现有技术相比,本发明的有益效果在于,通过步骤S100:获取主程序中的调用指令信息;步骤S200:根据调用指令信息对应的子程序代码行数S评估该子程序运行所需存储空间,并根据该子程序代码中空行数量W对评估后的子程序运行所需存储空间进行修正,修正完成后,根据子程序代码行的平均长度U对修正后子程序运行所需存储空间进行校正;以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。步骤S300:确定主程序在运行过程中所需的主存空间,并根据所述主存空间确定主存储器内的剩余空间;以精确确定主存储器内的剩余空间,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。步骤S400:根据所述剩余空间与所需存储空间的大小关系设定所述子程序的存储优先级,设定完成后,根据子程序被调用的次数N对各子程序的存储优先级进行调整,并根据子程序功能对系统稳定性的影响值P对调整后的子程序的存储优先级进行修正。以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过获取指令信息的操作码和地址码,将每一个操作码作为一个调用指令信息,以确定指令信息,保证了调用指令信息的获取精度,从而根据所述调用指令信息的数量确定子程序的数量,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过评估调用指令信息对应的子程序运行所需存储空间,以确定子程序运行所需存储空间,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取调用指令信息对应的子程序代码行数S,并将其与各预设子程序代码行数进行比对,当S≤S1时,评估该子程序运行所需存储空间为C1;当S1<S<S2时,评估该子程序运行所需存储空间为C2;当S≥S2时,评估该子程序运行所需存储空间为C3;其中,S1为第一预设子程序代码行数,S2第二预设子程序代码行数,S1<S2,子程序运行所需存储空间大小关系为C1<C2<C3。以确定子程序运行所需存储空间,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过对评估后的子程序运行所需存储空间进行修正,以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取调用指令信息对应的子程序代码行数S中的空行数量W,并将该空行数量W与预设空行数量W0进行比对,当0<W<W0时,选取第一修正系数k1对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,0.95<k1<1;当W≥W0时,选取第二校正系数k2对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,k2=k1-k1×(W-W0)/W;其中,当选取第i校正系数ki对评估后的子程序运行所需存储空间进行修正时,设定i=1,2,若评估后的子程序运行所需存储空间为C1,设定修正后的子程序运行所需存储空间为C1’,设定C1’= C1×ki,若评估后的子程序运行所需存储空间为C2,设定修正后的子程序运行所需存储空间为C2’,设定C2’= C2×ki,若评估后的子程序运行所需存储空间为C3,设定修正后的子程序运行所需存储空间为C3’,设定C3’= C3×ki。以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过对修正后子程序运行所需存储空间进行校正, 以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取子程序代码行的平均长度U,并将其与各预设代码行的平均长度进行比对,当U≤U1时,选取第一校正系数g1对修正后子程序运行所需存储空间进行校正,以减小修正后子程序运行所需存储空间,设定0.8<g1<1;当U1<U<U2时,不进行校正;当U≥U2时,选取第二校正系数g2对修正后子程序运行所需存储空间进行校正,以增大修正后子程序运行所需存储空间,设定1<g2<1.26;其中,U1为第一预设代码行的平均长度,U2为第二预设代码行的平均长度,U1<U2,当选取第i校正系数gi对修正后子程序运行所需存储空间进行校正时,设定i=1,2,若修正后子程序运行所需存储空间为C1’时,设定校正后的子程序运行所需存储空间为C1’’,设定C1’’=C1’×gi,若修正后子程序运行所需存储空间为C2’时,设定校正后的子程序运行所需存储空间为C2’’,设定C2’’=C2’×gi,若修正后子程序运行所需存储空间为C3’时,设定校正后的子程序运行所需存储空间为C3’’,设定C3’’=C3’×gi。以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过确定主程序在运行过程中所需的主存空间,以确定主存空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取主程序的代码行数A,并将其与预设主程序的代码行数A0进行比对,当A<A0时,确定主程序在运行过程中所需的主存空间为R1;当A≥A0时,确定主程序在运行过程中所需的主存空间为R2;其中,R1<R2。以确定主存空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过根据所述主存空间确定主存储器内的剩余空间L,以确定主存储器内的剩余空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过设定L=Z-Ri,i=1,2,式中Z为主存储器空间,Ri为主程序在运行过程中所需的主存空间。以确定主存储器内的剩余空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过设定子程序的存储优先级,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取剩余空间L,并将剩余空间L与校正后的各子程序运行所需存储空间进行比对,当L>C3’’时,将该子程序的存储优先级设定为一级;当L>C2’’时,将该子程序的存储优先级设定为二级;当L>C1’’时,将该子程序的存储优先级设定为三级;其中,存储优先级的大小关系为一级>二级>三级,级别大的优先。以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,调整子程序的存储优先级,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取各子程序被调用的次数N,并将其与预设被调用的次数N0进行比对,当N>N0时,若该子程序的存储优先级为一级,不进行调整;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级调整为二级;当N≤N0时,若该子程序的存储优先级为一级,将该子程序的存储优先级调整为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为三级;若该子程序的存储优先级为三级,不进行调整。以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
尤其,通过修正所述子程序的存储优先级,保证了子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取各子程序功能对系统稳定性的影响值P,并根据预设影响值Pb,计算影响差值△P,设定△P=|Pb-P|,并将该影响差值△P与标准影响差值△Pstd进行比对,当△P≥△Pstd时,若该子程序的存储优先级设定为一级,不进行修正;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级修正为二级;当△P<△Pstd时,若该子程序的存储优先级为一级,将该子程序的存储优先级修正为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为三级;若该子程序的存储优先级为三级,不进行修正。保证了子程序存储优先级的精度,从而提高主程序运行稳定性。
附图说明
图1为本发明实施例提供的基于内存空间优化的插件程序调用方法的流程示意图。
具体实施方式
为了使本发明的目的和优点更加清楚明白,下面结合实施例对本发明作进一步描述;应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非在限制本发明的保护范围。
需要说明的是,在本发明的描述中,术语“上”、“下”、“左”、“右”、“内”、“外”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,还需要说明的是,在本发明的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可根据具体情况理解上述术语在本发明中的具体含义。
请参阅图1所示,其为本发明实施例提供的基于内存空间优化的插件程序调用方法,包括,
步骤S100:获取主程序中的调用指令信息;
步骤S200:根据调用指令信息对应的子程序代码行数S评估该子程序运行所需存储空间,并根据该子程序代码中空行数量W对评估后的子程序运行所需存储空间进行修正,修正完成后,根据子程序代码行的平均长度U对修正后子程序运行所需存储空间进行校正;
步骤S300:确定主程序在运行过程中所需的主存空间,并根据所述主存空间确定主存储器内的剩余空间;
步骤S400:根据所述剩余空间与所需存储空间的大小关系设定所述子程序的存储优先级,设定完成后,根据子程序被调用的次数N对各子程序的存储优先级进行调整,并根据子程序功能对系统稳定性的影响值P对调整后的子程序的存储优先级进行修正。
具体而言,本发明实施例中的主存储器内设置有主存储空间和剩余空间,主存储空间用以存储有主程序,剩余空间用以存储主程序需要调用的子程序,在实际应用中主程序内存在至少一个调用指令信息,指令信息包括操作码和地址码。
具体而言,本发明实施例通过步骤S100:获取主程序中的调用指令信息;步骤S200:根据调用指令信息对应的子程序代码行数S评估该子程序运行所需存储空间,并根据该子程序代码中空行数量W对评估后的子程序运行所需存储空间进行修正,修正完成后,根据子程序代码行的平均长度U对修正后子程序运行所需存储空间进行校正;以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。步骤S300:确定主程序在运行过程中所需的主存空间,并根据所述主存空间确定主存储器内的剩余空间;以精确确定主存储器内的剩余空间,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。步骤S400:根据所述剩余空间与所需存储空间的大小关系设定所述子程序的存储优先级,设定完成后,根据子程序被调用的次数N对各子程序的存储优先级进行调整,并根据子程序功能对系统稳定性的影响值P对调整后的子程序的存储优先级进行修正。以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S100在获取主程序中的调用指令信息时,获取指令信息的操作码和地址码,将每一个操作码作为一个调用指令信息。
具体而言,本发明实施例通过获取指令信息的操作码和地址码,将每一个操作码作为一个调用指令信息,以确定指令信息,保证了调用指令信息的获取精度,从而根据所述调用指令信息的数量确定子程序的数量,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S200在评估调用指令信息对应的子程序运行所需存储空间时,获取调用指令信息对应的子程序代码行数S,并将其与各预设子程序代码行数进行比对,并根据比对结果评估调用指令信息对应的子程序运行所需存储空间,其中,
当S≤S1时,评估该子程序运行所需存储空间为C1;
当S1<S<S2时,评估该子程序运行所需存储空间为C2;
当S≥S2时,评估该子程序运行所需存储空间为C3;
其中,S1为第一预设子程序代码行数,S2第二预设子程序代码行数,S1<S2,子程序运行所需存储空间大小关系为C1<C2<C3。
具体而言,本发明实施例通过评估调用指令信息对应的子程序运行所需存储空间,以确定子程序运行所需存储空间,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取调用指令信息对应的子程序代码行数S,并将其与各预设子程序代码行数进行比对,当S≤S1时,评估该子程序运行所需存储空间为C1;当S1<S<S2时,评估该子程序运行所需存储空间为C2;当S≥S2时,评估该子程序运行所需存储空间为C3;其中,S1为第一预设子程序代码行数,S2第二预设子程序代码行数,S1<S2,子程序运行所需存储空间大小关系为C1<C2<C3。以确定子程序运行所需存储空间,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S200在对评估后的子程序运行所需存储空间进行修正时,获取调用指令信息对应的子程序代码行数S中的空行数量W,并将该空行数量W与预设空行数量W0进行比对,并根据比对结果对评估后的子程序运行所需存储空间进行修正,其中,
当0<W<W0时,选取第一修正系数k1对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,0.95<k1<1;
当W≥W0时,选取第二校正系数k2对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,k2=k1-k1×(W-W0)/W;
其中,当选取第i校正系数ki对评估后的子程序运行所需存储空间进行修正时,设定i=1,2,若评估后的子程序运行所需存储空间为C1,设定修正后的子程序运行所需存储空间为C1’,设定C1’= C1×ki,若评估后的子程序运行所需存储空间为C2,设定修正后的子程序运行所需存储空间为C2’,设定C2’= C2×ki,若评估后的子程序运行所需存储空间为C3,设定修正后的子程序运行所需存储空间为C3’,设定C3’= C3×ki。
具体而言,本发明实施例中所述空行为相邻行代码之间无任何字符的空白行,因为在获取调用指令信息对应的子程序代码行数时包括了空行数量。
具体而言,本发明实施例通过对评估后的子程序运行所需存储空间进行修正,以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取调用指令信息对应的子程序代码行数S中的空行数量W,并将该空行数量W与预设空行数量W0进行比对,当0<W<W0时,选取第一修正系数k1对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,0.95<k1<1;当W≥W0时,选取第二校正系数k2对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,k2=k1-k1×(W-W0)/W;其中,当选取第i校正系数ki对评估后的子程序运行所需存储空间进行修正时,设定i=1,2,若评估后的子程序运行所需存储空间为C1,设定修正后的子程序运行所需存储空间为C1’,设定C1’= C1×ki,若评估后的子程序运行所需存储空间为C2,设定修正后的子程序运行所需存储空间为C2’,设定C2’= C2×ki,若评估后的子程序运行所需存储空间为C3,设定修正后的子程序运行所需存储空间为C3’,设定C3’= C3×ki。以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S200在对修正后子程序运行所需存储空间进行校正时,获取子程序代码行的平均长度U,并将其与各预设代码行的平均长度进行比对,并根据比对结果对修正后子程序运行所需存储空间进行校正,其中,
当U≤U1时,选取第一校正系数g1对修正后子程序运行所需存储空间进行校正,以减小修正后子程序运行所需存储空间,设定0.8<g1<1;
当U1<U<U2时,不进行校正;
当U≥U2时,选取第二校正系数g2对修正后子程序运行所需存储空间进行校正,以增大修正后子程序运行所需存储空间,设定1<g2<1.26;
其中,U1为第一预设代码行的平均长度,U2为第二预设代码行的平均长度,U1<U2,当选取第i校正系数gi对修正后子程序运行所需存储空间进行校正时,设定i=1,2,若修正后子程序运行所需存储空间为C1’时,设定校正后的子程序运行所需存储空间为C1’’,设定C1’’=C1’×gi,若修正后子程序运行所需存储空间为C2’时,设定校正后的子程序运行所需存储空间为C2’’,设定C2’’=C2’×gi,若修正后子程序运行所需存储空间为C3’时,设定校正后的子程序运行所需存储空间为C3’’,设定C3’’=C3’×gi。
具体而言,本发明实施例未对子程序代码行的平均长度的获取方式作具体限定,本领域技术人员可自由设置,如子程序代码有5行,该5行代码的长度分别是10个字符、15个字符、3个字符、7个字符和22个字符,则将各行字符数相加除以总行数计算得到该对子程序代码行的平均长度,即,该子程序代码行的平均长度为(10+15+3+7+22)/5=11.4个字符,还可设置其他获取方式,只需满足需求即可。
具体而言,本发明实施例通过对修正后子程序运行所需存储空间进行校正, 以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取子程序代码行的平均长度U,并将其与各预设代码行的平均长度进行比对,当U≤U1时,选取第一校正系数g1对修正后子程序运行所需存储空间进行校正,以减小修正后子程序运行所需存储空间,设定0.8<g1<1;当U1<U<U2时,不进行校正;当U≥U2时,选取第二校正系数g2对修正后子程序运行所需存储空间进行校正,以增大修正后子程序运行所需存储空间,设定1<g2<1.26;其中,U1为第一预设代码行的平均长度,U2为第二预设代码行的平均长度,U1<U2,当选取第i校正系数gi对修正后子程序运行所需存储空间进行校正时,设定i=1,2,若修正后子程序运行所需存储空间为C1’时,设定校正后的子程序运行所需存储空间为C1’’,设定C1’’=C1’×gi,若修正后子程序运行所需存储空间为C2’时,设定校正后的子程序运行所需存储空间为C2’’,设定C2’’=C2’×gi,若修正后子程序运行所需存储空间为C3’时,设定校正后的子程序运行所需存储空间为C3’’,设定C3’’=C3’×gi。以提高子程序运行所需存储空间的精度,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S300确定主程序在运行过程中所需的主存空间时,获取主程序的代码行数A,并将其与预设主程序的代码行数A0进行比对,并根据比对结果确定主程序在运行过程中所需的主存空间,其中,
当A<A0时,确定主程序在运行过程中所需的主存空间为R1;
当A≥A0时,确定主程序在运行过程中所需的主存空间为R2;
其中,R1<R2。
具体而言,本发明实施例通过确定主程序在运行过程中所需的主存空间,以确定主存空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取主程序的代码行数A,并将其与预设主程序的代码行数A0进行比对,当A<A0时,确定主程序在运行过程中所需的主存空间为R1;当A≥A0时,确定主程序在运行过程中所需的主存空间为R2;其中,R1<R2。以确定主存空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S300在根据所述主存空间确定主存储器内的剩余空间L时,设定L=Z-Ri,i=1,2,式中Z为主存储器空间,Ri为主程序在运行过程中所需的主存空间。
具体而言,本发明实施例通过根据所述主存空间确定主存储器内的剩余空间L,以确定主存储器内的剩余空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过设定L=Z-Ri,i=1,2,式中Z为主存储器空间,Ri为主程序在运行过程中所需的主存空间。以确定主存储器内的剩余空间大小,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S400在设定所述子程序的存储优先级时,获取剩余空间L,并将剩余空间L与校正后的各子程序运行所需存储空间进行比对,并根据比对结果设定子程序的存储优先级,其中,
当L>C3’’时,将该子程序的存储优先级设定为一级;
当L>C2’’时,将该子程序的存储优先级设定为二级;
当L>C1’’时,将该子程序的存储优先级设定为三级;
其中,存储优先级的大小关系为一级>二级>三级,级别大的优先。
具体而言,本发明实施例通过设定子程序的存储优先级,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取剩余空间L,并将剩余空间L与校正后的各子程序运行所需存储空间进行比对,当L>C3’’时,将该子程序的存储优先级设定为一级;当L>C2’’时,将该子程序的存储优先级设定为二级;当L>C1’’时,将该子程序的存储优先级设定为三级;其中,存储优先级的大小关系为一级>二级>三级,级别大的优先。以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S400在调整所述子程序的存储优先级时,获取各子程序被调用的次数N,并将其与预设被调用的次数N0进行比对,并根据比对结果对各子程序的存储优先级进行调整,其中,
当N>N0时,若该子程序的存储优先级为一级,不进行调整;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级调整为二级;
当N≤N0时,若该子程序的存储优先级为一级,将该子程序的存储优先级调整为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为三级;若该子程序的存储优先级为三级,不进行调整。
具体而言,本发明实施例通过调整子程序的存储优先级,以保证子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取各子程序被调用的次数N,并将其与预设被调用的次数N0进行比对,当N>N0时,若该子程序的存储优先级为一级,不进行调整;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级调整为二级;当N≤N0时,若该子程序的存储优先级为一级,将该子程序的存储优先级调整为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为三级;若该子程序的存储优先级为三级,不进行调整。以保证子程序存储优先级的精度,从而提高主程序运行稳定性。
具体而言,所述步骤S400在修正所述子程序的存储优先级时,获取各子程序功能对系统稳定性的影响值P,并根据预设影响值Pb,计算影响差值△P,设定△P=|Pb-P|,并将该影响差值△P与标准影响差值△Pstd进行比对,并根据比对结果对各子程序的存储优先级进行修正,其中,
当△P≥△Pstd时,若该子程序的存储优先级设定为一级,不进行修正;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级修正为二级;
当△P<△Pstd时,若该子程序的存储优先级为一级,将该子程序的存储优先级修正为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为三级;若该子程序的存储优先级为三级,不进行修正。
具体而言,本发明实施例通过修正后的子程序的存储优先级,按照存储优先级大小关系为一级>二级>三级,存储优先级大的子程序优先存储的方法进行插件程序调用。
具体而言,本发明实施例通过修正所述子程序的存储优先级,保证了子程序存储优先级的精度,从而提高主程序运行稳定性。通过获取各子程序功能对系统稳定性的影响值P,并根据预设影响值Pb,计算影响差值△P,设定△P=|Pb-P|,并将该影响差值△P与标准影响差值△Pstd进行比对,当△P≥△Pstd时,若该子程序的存储优先级设定为一级,不进行修正;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级修正为二级;当△P<△Pstd时,若该子程序的存储优先级为一级,将该子程序的存储优先级修正为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为三级;若该子程序的存储优先级为三级,不进行修正。保证了子程序存储优先级的精度,从而提高主程序运行稳定性。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
以上所述仅为本发明的优选实施例,并不用于限制本发明;对于本领域的技术人员来说,本发明可以有各种更改和变化。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于内存空间优化的插件程序调用方法,其特征在于,包括,
获取主程序中的调用指令信息;
根据调用指令信息对应的子程序代码行数S评估该子程序运行所需存储空间,并根据该子程序代码中空行数量W对评估后的子程序运行所需存储空间进行修正,修正完成后,根据子程序代码行的平均长度U对修正后子程序运行所需存储空间进行校正;
确定主程序在运行过程中所需的主存空间,并根据所述主存空间确定主存储器内的剩余空间;
根据所述剩余空间与所需存储空间的大小关系设定所述子程序的存储优先级,设定完成后,根据子程序被调用的次数N对各子程序的存储优先级进行调整,并根据子程序功能对系统稳定性的影响值P对调整后的子程序的存储优先级进行修正。
2.根据权利要求1所述的基于内存空间优化的插件程序调用方法,其特征在于,在获取主程序中的调用指令信息时,获取指令信息的操作码和地址码,将每一个操作码作为一个调用指令信息。
3.根据权利要求2所述的基于内存空间优化的插件程序调用方法,其特征在于,在评估调用指令信息对应的子程序运行所需存储空间时,获取调用指令信息对应的子程序代码行数S,并将其与各预设子程序代码行数进行比对,并根据比对结果评估调用指令信息对应的子程序运行所需存储空间,其中,
当S≤S1时,评估该子程序运行所需存储空间为C1;
当S1<S<S2时,评估该子程序运行所需存储空间为C2;
当S≥S2时,评估该子程序运行所需存储空间为C3;
其中,S1为第一预设子程序代码行数,S2第二预设子程序代码行数,S1<S2,子程序运行所需存储空间大小关系为C1<C2<C3。
4.根据权利要求3所述的基于内存空间优化的插件程序调用方法,其特征在于,在对评估后的子程序运行所需存储空间进行修正时,获取调用指令信息对应的子程序代码行数S中的空行数量W,并将该空行数量W与预设空行数量W0进行比对,并根据比对结果对评估后的子程序运行所需存储空间进行修正,其中,
当0<W<W0时,选取第一修正系数k1对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,0.95<k1<1;
当W≥W0时,选取第二校正系数k2对评估后的子程序运行所需存储空间进行修正,以减小该子程序运行所需存储空间,设定,k2=k1-k1×(W-W0)/W;
其中,当选取第i校正系数ki对评估后的子程序运行所需存储空间进行修正时,设定i=1,2,若评估后的子程序运行所需存储空间为C1,设定修正后的子程序运行所需存储空间为C1’,设定C1’= C1×ki,若评估后的子程序运行所需存储空间为C2,设定修正后的子程序运行所需存储空间为C2’,设定C2’= C2×ki,若评估后的子程序运行所需存储空间为C3,设定修正后的子程序运行所需存储空间为C3’,设定C3’= C3×ki。
5.根据权利要求4所述的基于内存空间优化的插件程序调用方法,其特征在于,在对修正后子程序运行所需存储空间进行校正时,获取子程序代码行的平均长度U,并将其与各预设代码行的平均长度进行比对,并根据比对结果对修正后子程序运行所需存储空间进行校正,其中,
当U≤U1时,选取第一校正系数g1对修正后子程序运行所需存储空间进行校正,以减小修正后子程序运行所需存储空间,设定0.8<g1<1;
当U1<U<U2时,不进行校正;
当U≥U2时,选取第二校正系数g2对修正后子程序运行所需存储空间进行校正,以增大修正后子程序运行所需存储空间,设定1<g2<1.26;
其中,U1为第一预设代码行的平均长度,U2为第二预设代码行的平均长度,U1<U2,当选取第i校正系数gi对修正后子程序运行所需存储空间进行校正时,设定i=1,2,若修正后子程序运行所需存储空间为C1’时,设定校正后的子程序运行所需存储空间为C1’’,设定C1’’=C1’×gi,若修正后子程序运行所需存储空间为C2’时,设定校正后的子程序运行所需存储空间为C2’’,设定C2’’=C2’×gi,若修正后子程序运行所需存储空间为C3’时,设定校正后的子程序运行所需存储空间为C3’’,设定C3’’=C3’×gi。
6.根据权利要求5所述的基于内存空间优化的插件程序调用方法,其特征在于,确定主程序在运行过程中所需的主存空间时,获取主程序的代码行数A,并将其与预设主程序的代码行数A0进行比对,并根据比对结果确定主程序在运行过程中所需的主存空间,其中,
当A<A0时,确定主程序在运行过程中所需的主存空间为R1;
当A≥A0时,确定主程序在运行过程中所需的主存空间为R2;
其中,R1<R2。
7.根据权利要求6所述的基于内存空间优化的插件程序调用方法,其特征在于,在根据所述主存空间确定主存储器内的剩余空间L时,设定L=Z-Ri,i=1,2,式中Z为主存储器空间,Ri为主程序在运行过程中所需的主存空间。
8.根据权利要求7所述的基于内存空间优化的插件程序调用方法,其特征在于,在设定所述子程序的存储优先级时,获取剩余空间L,并将剩余空间L与校正后的各子程序运行所需存储空间进行比对,并根据比对结果设定子程序的存储优先级,其中,
当L>C3’’时,将该子程序的存储优先级设定为一级;
当L>C2’’时,将该子程序的存储优先级设定为二级;
当L>C1’’时,将该子程序的存储优先级设定为三级;
其中,存储优先级的大小关系为一级>二级>三级,级别大的优先。
9.根据权利要求8所述的基于内存空间优化的插件程序调用方法,其特征在于,在调整所述子程序的存储优先级时,获取各子程序被调用的次数N,并将其与预设被调用的次数N0进行比对,并根据比对结果对各子程序的存储优先级进行调整,其中,
当N>N0时,若该子程序的存储优先级为一级,不进行调整;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级调整为二级;
当N≤N0时,若该子程序的存储优先级为一级,将该子程序的存储优先级调整为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级调整为三级;若该子程序的存储优先级为三级,不进行调整。
10.根据权利要求9所述的基于内存空间优化的插件程序调用方法,其特征在于,在修正所述子程序的存储优先级时,获取各子程序功能对系统稳定性的影响值P,并根据预设影响值Pb,计算影响差值△P,设定△P=|Pb-P|,并将该影响差值△P与标准影响差值△Pstd进行比对,并根据比对结果对调整后的子程序的存储优先级进行修正,其中,
当△P≥△Pstd时,若该子程序的存储优先级设定为一级,不进行修正;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为一级;若该子程序的存储优先级为三级,将该子程序的存储优先级修正为二级;
当△P<△Pstd时,若该子程序的存储优先级为一级,将该子程序的存储优先级修正为二级;若该子程序的存储优先级为二级,将该子程序的存储优先级修正为三级;若该子程序的存储优先级为三级,不进行修正。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211099753.3A CN115185615B (zh) | 2022-09-09 | 2022-09-09 | 基于内存空间优化的插件程序调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211099753.3A CN115185615B (zh) | 2022-09-09 | 2022-09-09 | 基于内存空间优化的插件程序调用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115185615A CN115185615A (zh) | 2022-10-14 |
CN115185615B true CN115185615B (zh) | 2022-12-02 |
Family
ID=83524767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211099753.3A Active CN115185615B (zh) | 2022-09-09 | 2022-09-09 | 基于内存空间优化的插件程序调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185615B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857548A (zh) * | 2019-01-04 | 2019-06-07 | 平安科技(深圳)有限公司 | 存储空间优化方法、装置、计算机设备及存储介质 |
CN109960589A (zh) * | 2019-03-25 | 2019-07-02 | 上海富士施乐有限公司 | 嵌入式系统的系统软件层的实现方法、装置及可读介质 |
CN110471759A (zh) * | 2019-07-04 | 2019-11-19 | 中科晶上(苏州)信息技术有限公司 | 一种多核嵌入式处理器内存实时动态管理方法 |
CN111381905A (zh) * | 2018-12-27 | 2020-07-07 | 北京华为数字技术有限公司 | 一种程序处理方法、装置及设备 |
CN112130988A (zh) * | 2020-08-12 | 2020-12-25 | 国电南瑞科技股份有限公司 | 一种基于优先级分区的任务加速优化方法及装置 |
CN113885917A (zh) * | 2021-10-18 | 2022-01-04 | 中国第一汽车股份有限公司 | 控制器的程序刷写方法、装置、控制器和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7309912B2 (ja) * | 2019-12-10 | 2023-07-18 | 富士フイルム株式会社 | 情報処理システム、情報処理方法、及び情報処理プログラム |
-
2022
- 2022-09-09 CN CN202211099753.3A patent/CN115185615B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381905A (zh) * | 2018-12-27 | 2020-07-07 | 北京华为数字技术有限公司 | 一种程序处理方法、装置及设备 |
CN109857548A (zh) * | 2019-01-04 | 2019-06-07 | 平安科技(深圳)有限公司 | 存储空间优化方法、装置、计算机设备及存储介质 |
CN109960589A (zh) * | 2019-03-25 | 2019-07-02 | 上海富士施乐有限公司 | 嵌入式系统的系统软件层的实现方法、装置及可读介质 |
CN110471759A (zh) * | 2019-07-04 | 2019-11-19 | 中科晶上(苏州)信息技术有限公司 | 一种多核嵌入式处理器内存实时动态管理方法 |
CN112130988A (zh) * | 2020-08-12 | 2020-12-25 | 国电南瑞科技股份有限公司 | 一种基于优先级分区的任务加速优化方法及装置 |
CN113885917A (zh) * | 2021-10-18 | 2022-01-04 | 中国第一汽车股份有限公司 | 控制器的程序刷写方法、装置、控制器和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115185615A (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115185615B (zh) | 基于内存空间优化的插件程序调用方法 | |
CN106981308B (zh) | 一种精准获取llr信息的应用方法 | |
CN112445635A (zh) | 数据驱动的自适应检查点优化方法 | |
CN111273606A (zh) | 一种五轴机床几何误差补偿的刀具姿态优化方法 | |
CN116149260B (zh) | 3c金属加工中圆弧与圆弧平滑过渡的方法及系统 | |
US20090106513A1 (en) | Method for copying data in non-volatile memory system | |
US8719792B2 (en) | Correcting job control language job errors | |
CN117250909A (zh) | 一种基于测地线的自由曲面数控加工路径规划方法 | |
US5740447A (en) | Branch instruction optimizing process system in linkage editor | |
CN113865627A (zh) | 编码器绝对位置确定方法、装置、设备及可读存储介质 | |
CN111863107A (zh) | 闪存纠错方法及装置 | |
CN107292220B (zh) | 一种眉毛位置的初始化方法及电子设备 | |
CN108304191B (zh) | 函数动态调用方法和装置 | |
CN107292812A (zh) | 一种表情迁移的方法及电子设备 | |
US8116901B2 (en) | Method and device for controlling a motion sequence of a machine element | |
CN112882705A (zh) | 基于界面更新的表达式计算方法、装置、设备及介质 | |
CA2428284A1 (en) | A method for minimizing spill in code scheduled by a list scheduler | |
CN109698007B (zh) | 存储器装置及其操作方法 | |
CN115049685B (zh) | 区域生长图像分割方法、装置、计算机设备及存储介质 | |
CN112591183B (zh) | 一种模组入带方法、装置及存储介质 | |
US20210132732A1 (en) | Control apparatus | |
CN114025079B (zh) | 一种图像质量优化参数的处理方法、装置和系统 | |
US11132254B2 (en) | Semiconductor integrated circuit, storage device, and error correction method | |
CN112217391A (zh) | 电源转换器电压输出设计方法、系统、终端及存储介质 | |
JPS6362053A (ja) | ガ−ベジコレクシヨン処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |