VB.Net处理逻辑运算的缺点

刚刚看《Thinking in Java 3th》时发现,Java处理逻辑运算有个“短路”的特性,即是:一旦能够明确无误的确定整个表达式的值,就不再计算表达式余下的部分。比如:

 

ContractedBlock.gif ExpandedBlockStart.gif Java代码
 
   
static boolean test( int num){
System.out.println(
" num: " + num);
return num < 2 ;
}
public static void main(String []args){
if (test( 1 ) && test( 2 ) && test( 3 )){
System.out.println(
" success " );
}
else {
System.out.println(
" false " );
}
}

程序运行后输出什么?

 

"num:3"这一句会输出吗?

答案是不会的,就是说,程序在执行到test(2)这一句返回false后,就不再执行test(3)了,因为这里所有连接符都是&&(与)。当有一个子表达式不成立的时候,那么整个表达式都是不成立的。这就会替程序运行节省资源和时间。

我又在VS2005里面测试了VB.NET的代码。一样的逻辑,但我发现在.Net里面是把num:3这句输出的。

 

ContractedBlock.gif ExpandedBlockStart.gif VB.NET代码
 
   
Private Function test( ByVal num As Integer ) As Boolean
Me .btnAdd.Text &= num
Return num < 2
End Function

Protected Sub btnSubmit_Click( ByVal sender As Object , ByVal e As System.EventArgs) Handles btnSubmit.Click
Dim t As Integer = Me .tblTest.Rows.Count
If test( 1 ) And test( 2 ) And test( 3 ) Then
btnSubmit.Text
= " success "
Else
btnSubmit.Text
= " failed "
End If
End Sub

 

 

在这个点上,我认为VB.Net的处理是不如Java的,这就给对程序性能比较在意的.Net程序要写多点代码,把一些程序执行时可能不需要判断的到的代码放到子模块里面。

我又测试了JavaScript的代码,发现JavaScript也有"短路"的特性。

 

即使如此,还是感觉Java的运行速度不如.Net,不知道是不是JVM为了兼容平台,而牺牲掉在每个平台的速度?还请网友指点。

不足之处,还望指正。

 

PS:经测试,C#.Net还是具有这个短路特性的。

转载于:https://www.cnblogs.com/caiwujia/archive/2010/03/19/net.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值