去除循环处理流程中条件判断语句的方法和装置、应用单元与流程

文档序号:12462869阅读:239来源:国知局
去除循环处理流程中条件判断语句的方法和装置、应用单元与流程

本发明涉及计算机技术,尤其是一种去除循环处理流程中条件判断语句的方法和装置、应用单元。



背景技术:

随着计算机技术和互联网技术的发展,各种应用也不断产生、升级,用户在工作、生活、娱乐中使用的应用也越来越多,应用的执行效率觉得了应用的性能和市场。而在各种应用的程序(以下简称:应用程序)运行的过程中,或多或少都会进行一些条件判断,可能导致应用程序进入循环处理流程。

在实现本发明的过程中,发明人通过研究发现:

在应用的循环处理流程中,条件判断语句严重影响了应用程序的执行效率。例如,在ARM7处理器上,无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此至少需要3个周期,如图1所示,为存在条件判断语句时循环处理流程示意图。相反,除了乘法外,大部分算术运算和逻辑运算指令都是单周期的,对于所有的带条件的指令,如果条件不满足,指令不被执行,都只需要花1个周期来跳过该指令。



技术实现要素:

本发明实施例所要解决的一个技术问题是:提供一种去除循环处理流程中条件判断语句的方法和装置、应用单元,以提高循环处理流程的执行效率。

根据本发明实施例的一个方面,提供的一种去除循环处理流程中条件判断语句的方法,包括:

响应于读取到条件判断语句,获取所述条件判断语句中判断条件的条件形式;

根据所述判断条件的条件形式,生成所述条件判断语句的非判断执行应用单元;所述非判断执行应用单元通过符号位获取、加减法操作和按位与操作实现所述条件判断语句的执行结果。

可选地,上述方法实施例中,还包括:

执行所述非判断执行应用单元,获得所述条件判断语句的执行结果。

可选地,上述方法实施例中,所述判断条件的条件形式包括:a<b;

所述条件判断语句包括:if(a<b)c=b;else c=a,或者c=a<b?b:a;

所述非判断执行应用单元包括:c=((Sign(a-b)-1)&(a-b))+b。

可选地,上述方法实施例中,执行所述非判断执行应用单元,获得所述条件判断语句的执行结果,包括:

计算a与b相减的结果d=a-b;

获取d的符号位Sign(d);

计算d的符号位Sign(d)与1的差值Sign(d)-1;

将所述差值Sign(d)-1与d做按位与运算,获得第一运算结果(Sign(d)-1)&d;

计算所述第一运算结果(Sign(d)-1)&d与b相加的值((Sign(d)-1)&d)+b;

将所述值((Sign(d)-1)&d)+b赋值给c。

可选地,上述方法实施例中,b的取值为0。

可选地,上述方法实施例中,所述判断条件的条件形式包括:a>b;

所述条件判断语句包括:if(a>b)c=b;else c=a,或者c=a>b?b:a;

所述非判断执行应用单元包括:c=-((sign(b-a)-1)&(b-a))+b。

可选地,上述方法实施例中,执行所述非判断执行应用单元,获得所述条件判断语句的执行结果,包括:

计算b与a相减的结果d=b-a;

获取d的符号位Sign(d);

计算d的符号位Sign(d)与1的差值Sign(d)-1;

将所述差值Sign(d)-1与d做按位与运算,获得第二运算结果(Sign(d)-1)&d;

计算b与所述第二运算结果(Sign(d)-1)&d的差值b-((Sign(d)-1)&d);

将所述差值b-((Sign(d)-1)&d)赋值给c。

可选地,上述方法实施例中,b的取值为255。

根据本发明实施例的另一个方面,提供的一种去除循环处理流程中条件判断语句的装置,包括:

获取单元,用于在读取到条件判断语句时,获取所述条件判断语句中判断条件的条件形式;

生成单元,用于根据所述判断条件的条件形式,生成所述条件判断语句的非判断执行应用单元;所述非判断执行应用单元通过符号位获取、加减法操作和按位与操作实现所述条件判断语句的执行结果。

可选地,上述装置实施例中,还包括:

执行单元,用于执行所述非判断执行应用单元,获得所述条件判断语句的执行结果。

可选地,上述装置实施例中,判断条件的条件形式包括:a<b;

所述条件判断语句包括:if(a<b)c=b;else c=a,或者c=a<b?b:a;

所述非判断执行应用单元包括:c=((Sign(a-b)-1)&(a-b))+b;

所述执行单元,具体用于:

计算a与b相减的结果d=a-b;

获取d的符号位Sign(d);

计算d的符号位Sign(d)与1的差值Sign(d)-1;

将所述差值Sign(d)-1与d做按位与运算,获得第一运算结果(Sign(d)-1)&d;

计算所述第一运算结果(Sign(d)-1)&d与b相加的值((Sign(d)-1)&d)+b;

将所述值((Sign(d)-1)&d)+b赋值给c。

可选地,上述装置实施例中,所述判断条件的条件形式包括:a>b;

所述条件判断语句包括:if(a>b)c=b;else c=a,或者c=a>b?b:a;

所述非判断执行应用单元包括:c=-((sign(b-a)-1)&(b-a))+b。

所述执行单元,具体用于:

计算b与a相减的结果d=b-a;

获取d的符号位Sign(d);

计算d的符号位Sign(d)与1的差值Sign(d)-1;

将所述差值Sign(d)-1与d做按位与运算,获得第二运算结果(Sign(d)-1)&d;

计算b与所述第二运算结果(Sign(d)-1)&d的差值b-((Sign(d)-1)&d);

将所述差值b-((Sign(d)-1)&d)赋值给c。

根据本发明实施例的一个方面,提供的一种应用单元,包括一个以上非判断执行应用单元;

所述非判断执行应用单元,用于通过符号位获取、加减法操作和按位与操作实现条件判断语句的执行结果。

可选地,上述应用单元实施例中,所述条件判断语句包括:if(a<b)c=b;else c=a,或者c=a<b?b:a;所述非判断执行应用单元包括:c=((Sign(a-b)-1)&(a-b))+b;

或者

所述条件判断语句包括:if(a>b)c=b;else c=a,或者c=a>b?b:a;所述非判断执行应用单元包括:c=-((sign(b-a)-1)&(b-a))+b。

基于本发明上述实施例提供的去除循环处理流程中条件判断语句的方法和装置、应用单元,读取到条件判断语句时,获取条件判断语句中判断条件的条件形式,根据该判断条件的条件形式,相应生成条件判断语句的非判断执行应用单元,无需执行判断条件,通过符号位获取、加减法操作和按位与操作来实现条件判断语句的执行结果,提高了循环处理流程的执行效率。本发明实施例应用于需要高速计算的领域时,对于执行效率的提升效果尤其明显。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。

参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:

图1为存在条件判断语句时循环处理流程示意图。

图2为本发明去除循环处理流程中条件判断语句的方法一个实施例的流程图。

图3为本发明去除循环处理流程中条件判断语句的方法另一个实施例的流程图。

图4为本发明去除循环处理流程中条件判断语句的方法又一个实施例的流程图。

图5为本发明实施例循环处理流程的一个示意图。

图6为本发明去除循环处理流程中条件判断语句的装置一个实施例的结构示意图。

图7为本发明去除循环处理流程中条件判断语句的装置另一个实施例的结构示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

图2为本发明去除循环处理流程中条件判断语句的方法一个实施例的流程图。如图2所示,该实施例去除循环处理流程中条件判断语句的方法包括:

102,响应于读取到条件判断语句,获取该条件判断语句中判断条件的条件形式。

104,根据判断条件的条件形式,生成上述条件判断语句的非判断执行应用单元。

其中,该非判断执行应用单元无需执行判断条件,通过符号位获取、加减法操作和按位与操作便可实现条件判断语句的执行结果。

基于本发明上述实施例提供的去除循环处理流程中条件判断语句的方法,读取到条件判断语句时,获取条件判断语句中判断条件的条件形式,根据该判断条件的条件形式,相应生成条件判断语句的非判断执行应用单元,无需执行判断条件,通过符号位获取、加减法操作和按位与操作来实现条件判断语句的执行结果,提高了循环处理流程的执行效率。本发明实施例应用于需要高速计算的领域时,对于执行效率的提升效果尤其明显。

图3为本发明去除循环处理流程中条件判断语句的方法另一个实施例的流程图。如3所示,与图2所示的实施例相比,该实施例去除循环处理流程中条件判断语句的方法,在上述操作104之后,还包括:

106,执行非判断执行应用单元,获得上述条件判断语句的执行结果。

在本发明上述各方法实施例的一个具体示例中,判断条件的条件形式为:a<b;条件判断语句为:if(a<b)c=b;else c=a,或者c=a<b?b:a,即:如果条件a<b成立,c的取值为b;否则,如果条件a<b不成立,包括a大于或等于b,c的取值为a。相应地,该实施例中,非判断执行应用单元为:c=((Sign(a-b)-1)&(a-b))+b。

与上述一个具体示例相应地,操作106中,执行非判断执行应用单元,获得条件判断语句的执行结果,具体可以通过如下方式实现:

计算a与b相减的结果:d=a-b;

获取d的符号位:Sign(d);

计算d的符号位:Sign(d)与1的差值Sign(d)-1;

将差值Sign(d)-1与d做按位与运算,获得第一运算结果:(Sign(d)-1)&d;

计算上述第一运算结果(Sign(d)-1)&d与b相加的值:((Sign(d)-1)&d)+b;

将值((Sign(d)-1)&d)+b赋值给c。

在上述一个具体示例的一个具体应用中,b的取值为0。

在本发明上述各方法实施例的另一个具体示例中,判断条件的条件形式为:a>b;条件判断语句为:if(a>b)c=b;else c=a,或者c=a>b?b:a,即:如果条件a>b成立,c的取值为b;否则,如果条件a>b不成立,包括a小于或等于b,c的取值为a。相应地,该实施例中,非判断执行应用单元为:c=-((sign(b-a)-1)&(b-a))+b。

与上述另一个具体示例相应地,操作106中,执行非判断执行应用单元,获得条件判断语句的执行结果,具体可以通过如下方式实现:

计算b与a相减的结果:d=b-a;

获取d的符号位:Sign(d);

计算d的符号位Sign(d)与1的差值:Sign(d)-1;

将差值Sign(d)-1与d做按位与运算,获得第二运算结果:(Sign(d)-1)&d;

计算b与上述第二运算结果(Sign(d)-1)&d的差值:b-((Sign(d)-1)&d);

将差值b-((Sign(d)-1)&d)赋值给c。

在上述另一个具体示例的一个具体应用中,b的取值为255。

基于本发明上述实施例提供的去除循环处理流程中条件判断语句的方法,读取到条件判断语句时,获取条件判断语句中判断条件的条件形式,根据该判断条件的条件形式,相应生成条件判断语句的非判断执行应用单元,执行该非判断执行应用单元,通过符号位获取、加减法操作和按位与操作来实现条件判断语句的执行结果。本发明实施例针对先进行条件判断后赋值的条件判断语句,去掉其中的条件判断而直接赋值,提高了循环处理流程的执行效率。本发明实施例应用于需要高速计算的领域时,对于执行效率的提升效果尤其明显。

本发明实施例可用于任何计算处理的流程,尤其应用于图像处理上效果比较明显,因为图像处理的数据量比较大,一幅1080p的24位彩色图像,针对r、g、b三个通道做处理,计算的数据量将达到600万次以上(1920x1080x3);而每次的计算结果都要限制其值处于[0,255]之间,这样处理过程中就用到了如

if(x<0)x=0;//这个else x=x;是隐藏的

if(x>255)x=255;///这个else x=x;是隐藏的

如果采用本发明上述各实施例的技术方案,可以很好地提高运算速度,尤其是在嵌入式板子上做图像处理时,对运算速度的提升效果更明显。

图4为本发明去除循环处理流程中条件判断语句的方法又一个实施例的流程图。如图4所示,该实施例去除循环处理流程中条件判断语句的方法包括:

202,响应于读取到条件判断语句,获取该条件判断语句中判断条件的条件形式是否为a<b。

若判断条件的条件形式是否为a<b,执行操作204。否则,若判断条件的条件形式为a>b,执行操作218。

204,生成上述条件判断语句的非判断执行应用单元c=((Sign(a-b)-1)&(a-b))+b。

之后,不执行本发明实施例的后续,或者作为另一个实施例执行操作206~216。

206,计算a与b相减的结果:d=a-b。

208,获取d的符号位:Sign(d)。

210,计算d的符号位Sign(d)与1的差值Sign(d)-1。

212,将差值Sign(d)-1与d做按位与运算,获得第一运算结果:(Sign(d)-1)&d。

214,计算上述第一运算结果(Sign(d)-1)&d与b相加的值:((Sign(d)-1)&d)+b。

216,将值((Sign(d)-1)&d)+b赋值给c。

之后,不执行本实施例的后续流程。

218,生成上述条件判断语句的非判断执行应用单元c=-((sign(b-a)-1)&(b-a))+b。

之后,不执行本发明实施例的后续,或者作为另一个实施例执行操作220~230。

220,计算b与a相减的结果:d=b-a。

222,获取d的符号位:Sign(d)。

224,计算d的符号位Sign(d)与1的差值:Sign(d)-1。

226,将差值Sign(d)-1与d做按位与运算,获得第二运算结果:(Sign(d)-1)&d。

228,计算b与上述第二运算结果(Sign(d)-1)&d的差值:b-((Sign(d)-1)&d)。

230,将差值b-((Sign(d)-1)&d)赋值给c。

图5为本发明实施例循环处理流程的一个示意图。如图5所示,为基于本发明上述方法实施例,将条件判断语句转换为非判断执行应用单元后的一个循环处理流程示意图。其中f(a)即赋给c的值。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

图6为本发明去除循环处理流程中条件判断语句的装置一个实施例的结构示意图。该实施例的装置可用于实现本发明上述各方法实施例。如图6所示,该实施例的装置包括:获取单元和生成单元。其中:

获取单元,用于在读取到条件判断语句时,获取条件判断语句中判断条件的条件形式。

生成单元,用于根据判断条件的条件形式,生成条件判断语句的非判断执行应用单元;非判断执行应用单元通过符号位获取、加减法操作和按位与操作实现条件判断语句的执行结果。

基于本发明上述实施例提供的去除循环处理流程中条件判断语句的装置,读取到条件判断语句时,获取条件判断语句中判断条件的条件形式,根据该判断条件的条件形式,相应生成条件判断语句的非判断执行应用单元,无需执行判断条件,通过符号位获取、加减法操作和按位与操作来实现条件判断语句的执行结果,提高了循环处理流程的执行效率。本发明实施例的装置在实际应用中,可以作为编译器,将应用程序中的条件判断语句编译为非判断执行应用单元,从而提高整个应用程序的执行效率。

图7为本发明去除循环处理流程中条件判断语句的装置另一个实施例的结构示意图。如图7所示,与图6所示的实施例相比,该实施例的装置还包括执行单元,用于执行非判断执行应用单元,获得条件判断语句的执行结果。

基于本发明上述实施例提供的去除循环处理流程中条件判断语句的装置,在执行循环处理流程时,读取到条件判断语句时,可以获取条件判断语句中判断条件的条件形式,根据该判断条件的条件形式,相应生成条件判断语句的非判断执行应用单元,直接执行该非判断执行应用单元,通过符号位获取、加减法操作和按位与操作来实现条件判断语句的执行结果。本发明实施例针对先进行条件判断后赋值的条件判断语句,去掉其中的条件判断而直接赋值,提高了循环处理流程的执行效率。

在上述装置实施例的一个具体示例中,判断条件的条件形式为:a<b;条件判断语句为:if(a<b)c=b;else c=a,或者c=a<b?b:a,非判断执行应用单元为:c=((Sign(a-b)-1)&(a-b))+b。相应地,该具体示例中,执行单元,具体用于:

计算a与b相减的结果d=a-b;

获取d的符号位Sign(d);

计算d的符号位Sign(d)与1的差值Sign(d)-1;

将差值Sign(d)-1与d做按位与运算,获得第一运算结果(Sign(d)-1)&d;

计算第一运算结果(Sign(d)-1)&d与b相加的值((Sign(d)-1)&d)+b;

将值((Sign(d)-1)&d)+b赋值给c。

在上述装置实施例的一个具体示例中,判断条件的条件形式为:a>b;条件判断语句为:if(a>b)c=b;else c=a,或者c=a>b?b:a;非判断执行应用单元为:c=-((sign(b-a)-1)&(b-a))+b。相应地,该具体示例中,执行单元,具体用于:

计算b与a相减的结果d=b-a;

获取d的符号位Sign(d);

计算d的符号位Sign(d)与1的差值Sign(d)-1;

将差值Sign(d)-1与d做按位与运算,获得第二运算结果(Sign(d)-1)&d;

计算b与第二运算结果(Sign(d)-1)&d的差值b-((Sign(d)-1)&d);

将差值b-((Sign(d)-1)&d)赋值给c。

本发明实施例还提供了一种应用单元,具体包括一个以上非判断执行应用单元,每个非判断执行应用单元,用于通过符号位获取、加减法操作和按位与操作实现条件判断语句的执行结果。

具体地,其中的条件判断语句包括:if(a<b)c=b;else c=a,或者c=a<b?b:a;非判断执行应用单元为:c=((Sign(a-b)-1)&(a-b))+b。

或者,其中的条件判断语句包括:if(a>b)c=b;else c=a,或者c=a>b?b:a;非判断执行应用单元包括:c=-((sign(b-a)-1)&(b-a))+b。

基于本发明上述实施例提供的应用单元,可以读取到条件判断语句时,获取条件判断语句中判断条件的条件形式,根据该判断条件的条件形式,相应生成条件判断语句的非判断执行应用单元,无需执行判断条件,通过符号位获取、加减法操作和按位与操作来实现条件判断语句的执行结果,提高了循环处理流程的执行效率。本发明实施例应用于需要高速计算的领域时,对于执行效率的提升效果尤其明显。

本发明人在Core i7-4790 CPU@3.60GHz@3.60GHz window7上,利用如下代码对本发明的技术方案进行了测试:

经过测试,针对a>b判断条件,存在执行条件判断语句时获得执行结果用时65ms,采用本发明实施例的方案消除条件判断语句后获得执行结果用时43ms。针对a<b判断条件,存在执行条件判断语句时获得执行结果用时73ms,采用本发明实施例的方案消除条件判断语句后获得执行结果用时40ms。

由此,明显可见,本发明实施例的方案消除条件判断语句后,在相同的硬件环境下,处理速度明显加快,本发明实施例的方案适用于需要高速计算的领域时,效果尤其明显。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置、单元实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

可能以许多方式来实现本发明的方法和装置、单元。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。

本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1