SAP ABAP关于提高效率,优化程序之谈(适合各种汇编以上的语言)
2013-05-26 09:43
357 查看
原文出自ZZP的ABAP博客: http://hi.baidu.com/zzp0805/item/a5ff2a3a75d345cd382ffa1a
大家都知道,现在cpu识别的是指令
暂且不要考虑循环前置或者循环指令后置
但是高级语言都要转换成汇编语言来执行
指令现在在cpu都是分段执行的,分多少段要看具体的设计了
现在一个假设,假如一个高级语言是
a = 5;
b = 6;
c = 7;
转换成汇编之后会是
mov ax,5
mov bx,6
mov cx,7的指令
分段的话,先这样考虑指令分成:
读指令,执行指令
上面的指令,转化一下,可以变成这样:
原理是,第一条指令还没执行完,第二条就开始了,这些也就实现了众多指令同步,实现了流水线。
那么,我们就可以想想,如果有一个语句是:
如果有一个内表有50个数字,然后loop at 内表,某一字段的值:
loop at 内表.
if 变量 > 50
a = 5,b = 6,c = 7;
else
a = 6,b = 7,c = 8;
endloop.
那么会执行if指令,然后去判断,判断的时候,
赋值语句:a已经开始了,b也应该执行指令了,c也刚开始进入
但是,如果if一旦不成立,要执行else的话,
那if下面的3条语句就跑了,而且,流水线,会断了,会重新去执行else
然后重新去执行else的另外赋值
这个也就是我说了要少引起断流,
要先看看内表的值的大概分布,假如有1000条数据,其中比50大的有800条,比50小的有200条,那么用:
if 变量 > 50
a = 5,b = 6,c = 7;
else
a = 6,b = 7,c = 8;
就会产生200条断流
假如有1000条数据,其中比50小的有800条,比50大的有200条,那么用:
if 变量 > 50
a = 5,b = 6,c = 7;
else
a = 6,b = 7,c = 8;
就会产生800条断流
那就要改成另一种写法,速度会快一点:
if 变量 < 50
a = 6,b = 7,c = 8;
else
a = 5,b = 6,c = 7;
这样就只有200条断流了。
嘿嘿,大家很多是搞应用层的,不需要对底层太熟悉,但是知道某些原理对编程方面是很有帮助的。
希望这个指令级别的优化,会对大家的编程有帮助。
大家都知道,现在cpu识别的是指令
暂且不要考虑循环前置或者循环指令后置
但是高级语言都要转换成汇编语言来执行
指令现在在cpu都是分段执行的,分多少段要看具体的设计了
现在一个假设,假如一个高级语言是
a = 5;
b = 6;
c = 7;
转换成汇编之后会是
mov ax,5
mov bx,6
mov cx,7的指令
分段的话,先这样考虑指令分成:
读指令,执行指令
上面的指令,转化一下,可以变成这样:
原理是,第一条指令还没执行完,第二条就开始了,这些也就实现了众多指令同步,实现了流水线。
那么,我们就可以想想,如果有一个语句是:
如果有一个内表有50个数字,然后loop at 内表,某一字段的值:
loop at 内表.
if 变量 > 50
a = 5,b = 6,c = 7;
else
a = 6,b = 7,c = 8;
endloop.
那么会执行if指令,然后去判断,判断的时候,
赋值语句:a已经开始了,b也应该执行指令了,c也刚开始进入
但是,如果if一旦不成立,要执行else的话,
那if下面的3条语句就跑了,而且,流水线,会断了,会重新去执行else
然后重新去执行else的另外赋值
这个也就是我说了要少引起断流,
要先看看内表的值的大概分布,假如有1000条数据,其中比50大的有800条,比50小的有200条,那么用:
if 变量 > 50
a = 5,b = 6,c = 7;
else
a = 6,b = 7,c = 8;
就会产生200条断流
假如有1000条数据,其中比50小的有800条,比50大的有200条,那么用:
if 变量 > 50
a = 5,b = 6,c = 7;
else
a = 6,b = 7,c = 8;
就会产生800条断流
那就要改成另一种写法,速度会快一点:
if 变量 < 50
a = 6,b = 7,c = 8;
else
a = 5,b = 6,c = 7;
这样就只有200条断流了。
嘿嘿,大家很多是搞应用层的,不需要对底层太熟悉,但是知道某些原理对编程方面是很有帮助的。
希望这个指令级别的优化,会对大家的编程有帮助。
相关文章推荐
- jsoncpp 执行效率优化,非常规极限优化,适合linux下, 效率几乎提高50%以上
- 寻找丑数及关于程序优化效率的一点说明
- C++ 嵌入汇编程序提高计算效率
- 关于优化内存 提高软件运行效率的 写的真的很不错
- 关于小话C语言集合贴,C 语言常见问题集,c语言-优化C代码常用的几招,高效程序的秘密_hacker's delight读书笔记
- 关于多循环多分支程序执行效率的可能优化方法
- 关于多线程io能否提高程序效率
- php 关于程序提高执行效率的方面
- 转载的一篇关于如何优化JAVA代码及提高效率的文章
- 一些关于提高python程序语言实时性的思考
- “提高一下dotnet程序的效率一”中关于exception的问题
- 小菜白话搭架子3:用业务优化提高程序效率
- 转载的一篇关于如何优化JAVA代码及提高效率的文章
- web程序中全优化(二)之 提高你的JavaScript效率Tips
- VC++ 提高C++程序运行效率10个简单方法(其他语言程序参考)
- 关于如何优化java代码提高效率的方法
- “提高一下dotnet程序的效率一”中关于exception的问题
- 转载的一篇关于如何优化JAVA代码及提高效率的文章
- 一篇关于如何优化JAVA代码及提高效率的文章
- 转载一篇关于如何优化java代码和提高效率的文章