SAP ABAP关于提高效率,优化程序之谈(适合各种汇编以上的语言)
来源:互联网 发布:ccs软件介绍 编辑:程序博客网 时间:2024/05/21 22:23
原文出自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条断流了。
嘿嘿,大家很多是搞应用层的,不需要对底层太熟悉,但是知道某些原理对编程方面是很有帮助的。
希望这个指令级别的优化,会对大家的编程有帮助。
- SAP ABAP关于提高效率,优化程序之谈(适合各种汇编以上的语言)
- SAP ABAP程序性能优化
- SAP ABAP程序性能优化
- SAP ABAP程序优化方法
- SAP ABAP程序性能优化
- SAP ABAP程序优化方法
- SAP ABAP程序优化方法(搜集自论坛)
- SAP ABAP程序优化方法(搜集自论坛)
- SAP ABAP程序性能优化 2
- SAP ABAP程序优化-多线程并行处理
- SAP ABAP程序优化-多线程并行处理
- SAP ABAP程序优化-多线程并行处理
- SAP ABAP程序效率优化 Perfomance Tune
- SAP ABAP程序优化-多线程并行处理
- SAP ABAP程序效率优化 Perfomance Tune
- SAP ABAP程序效率优化 Perfomance Tune
- SAP ABAP程序效率优化 Perfomance Tune
- ABAP程序的优化
- 设计模式
- java包管理机制
- LoadRunner 11 安装及破解
- Unsupported major.minor version 51.0
- 安装asterisk中遇到的错误
- SAP ABAP关于提高效率,优化程序之谈(适合各种汇编以上的语言)
- 序列号机制
- 通过反汇编来分析简单函数调用过程(***)
- 初窥Mysql存储过程
- virtualbox: Cannot register the hard disk
- HDOJ 4548 美素数
- “初识”三层架构
- C++纯虚函数详解
- rand和srand