- 热门文章:
- · PB中读取地磅称量数据
- · PB10中Microsoft OLE DB数据库连接配置
- · PowerBuilder8.0动态连接SQL Server技巧
- · PB通用类库和业务类库的设计思想(二)
- · 初学者:PB中的几种参数传递方式
- · PB通用类库和业务类库的设计思想(一)
- · Pb6中的串行通信(MSCOMM32.OCX)完全解答版
- · SQL Server连接VFP数据库的实现
- · 多語言版vfp程序設計簡單實現
- · 给pb的listview或者treeview控件加上背景图
- · PowerBuilder 9.0 抢先预览
- · [UDF系列]如何创建InterBase UDF
PB代码优化
现今计算机的运行速度已经很快了,并且由于老板时常在耳边念着紧箍咒,因此,我们有意或者无意的忘记优化我们的代码,只要能完成任务就行了(我也是)。不过,我们闲下来的时候,不妨也来看看我们的代码是否有需要改进的地方。下面就是我觉得值得优化的几种情况。
第一种情况:
IF condition1 AND condition2 THEN
//Code goes here.
END IF
和
IF condition1 THEN
IF condition2 THEN
//Code goes here.
END IF
END IF
对于书写的第一种方式,由于PB编译方式与常见的方式不同,就是无论条件1的值如何,都要对条件2进行运算。这样一来,当条件1为false时,就可能要无谓的对条件2进行运算了。就按随机的概率而言,可能会多进行一半的运算。因此,对于大多数情况而言,我想最好是以第二种方式书写。当然,特殊情况也是有的,那就是你的确想对条件2进行运算。类似地,对于or也一样。
IF condition1 OR condition2 THEN
//Code goes here.
END IF
和
IF condition1 THEN
//Code goes here.
ELSE
IF condition2 THEN
//Code goes here.
END IF
END IF
第二种情况:
IF NOT condition THEN
//Code goes here.
END IF
和
IF condition THEN
//No code goes here.
ELSE
//Code goes here.
END IF
对于上一种方式,条件表达式返回false并且再进行一个非运算,才执行下面的代码。这样相对于下面一种书写方式可能多执行了一个非运算。如果大家有什么疑问,您不妨测试一下下面这个例子:
//小测试:其中的判断条件只是为了表示一下,实际情况可能更复杂。
long i //计数器
long ll_start //执行开始时间
long ll_used1 //方式一耗时
long ll_used2 //方式二耗时
//方式一
ll_start = Cpu()
for i = 1 to 900000
if not (1 > 1) Then
i = i
end if
next
ll_used1 = Cpu() - ll_start
//方式二
ll_start = Cpu()
for i = 1 to 900000
if 1 > 1 Then
else
i = i
end if
Next
ll_used2 = Cpu() - ll_start
//查看结果
If ll_used2 > ll_used1 Then
MessageBox("提示","前者运行时间短!")
Else
MessageBox("提示","后者运行时间短!")
End If
可能有人会说,用下面的那种方式,如果在条件表达式返回false的时候,那么,if下就没有代码,这样看起来就不太舒服。的确是这样。因此,我们在写成上面的那种方式时,尽量保持不要使用not运算,而保持条件表达式本身就返回希望的true值。
第三种情况:
IF condition1 THEN
//condition1
ELSEIF condition2 THEN
//condition2
ELSEIF condition3 THEN
//condition3
ELSE
//Other
END IF
和
choose case /*expression*/
case /*item*/
/*statementblock*/
case /*item*/
/*statementblock*/
case else
/*statementblock*/
end choose
对于形如这样的表达式,我想我们一般都没去考虑先后顺序。但是,其实我们应该把最可能发生的情况,放在前面,这样可以避免在对一大堆条件进行判断后,才到我们真正需要运行代码的地方。
第四种情况:
FOR ... TO ...
IF condition THEN
//true
ELSE
//false
END IF
NEXT
和
IF condition THEN
//true
FOR ... TO ...
//Code goes here
NEXT
ELSE
//false
FOR ... TO ...
//Code goes here
NEXT
END IF
尽管下面这种书写方式,看起来好象代码多了一些,但是却极大的避免了在每个循环中都进行条件判断。其实,一个原则就是,我们应当尽量避免在循环中进行条件判断,而是把条件判断放到循环体的外面进行。
其实,真正对于PB语言有特殊性的,也就是第一种情况,对于后面三种情况,对于别的编程语言,我想也同样适用。
这是我的一点体会,谬误的地方请大家指正。
下一篇:PB中读取地磅称量数据 >>
相关文章:
- · (interbase之九)intebase的存储过程、触发器以及事件、异常
- · (interbase之七) 使用域扩展interbase的数据类型
- · (interbase之六) interbase的dialect
- · (INTERBASE之五) IB技术指标
- · (INTERBASE之四) interbase技术探秘
- · (INTERBASE之三) 什么是interbase
- · (INTERBASE之二) INTERBASE的发展史
- · (INTERBASE之一) INTERBASE有趣的故事
- · (interbase之八) interbase的事务处理
- · [UDF系列]如何编写InterBase UDF 之三
- · [UDF系列]如何编写InterBase UDF 之二
- · [UDF系列]如何编写InterBase UDF 之一
- · 如何在pb中创建COM组件,并在asp中调用并返回结果集?
- · 如何在pb9中调用WebService
- · Powerbuilder6.0实现 Browser/Server结构的Internet解决方案和工作方式
- · How did Interbase appear?(Interbase是如何出现的?)
- · PowerBuilder中回车键的应用
- · PowerBuilder数据库配置方法
- · PB中对INI文件读写的补充函数:删除指定的节或者指定节中某个项
- · 用PowerBuilder建立browser-server结构应用程序
- · PB7.0通用选字段查询窗口的设计
- · 怎样在PB中调用外部程序并判断其运行结束?
- · 如何在PB中实现串口编程
- · PowerBuilder修改数据库表结构的技巧
- · PowerBuilder窗口之间传递多参数的方法
- · 使PB窗口居中
- · 用PB实现Windows2000下的自动关机
- · InterBase 6.5的新特性
- · 2001-12-04 Borland 交付InterBase® 6.5
- · 通用权限管理工具,支所有ADO(包括ODBC)支持的数据库,不管用什么编程都行,VC/BCB/VB/PB/Delphi
- · 在PowerBuilder7.0中应用DDE技术一例
- · 不用重新安装PowerBuilder8.0也可以使用
- · powerbuilder中API應用10則
- · powerbuilder初學者概念20則
- · PB中表的修改对数据窗口和报表的影响的解决办法
- · 自适应屏幕分辨率的基类窗口(pb)
- · pb用纯函数实现在数据窗口中模拟资源管理器鼠标单击动作动态排序,并显示排序箭头
- · PowerBuilder 7.0实用技巧八则
