zoukankan      html  css  js  c++  java
  • VB.Net处理逻辑运算的缺点

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

    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这句输出的。

    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还是具有这个短路特性的。

  • 相关阅读:
    推荐电影 迪士尼经典动画片大全 1937-2008
    推荐电影 奥黛丽赫本的十大经典电影 1953-1989
    生活娱乐 ATM机键盘余温泄露密码
    生活娱乐 Wifi机器人的制作流程
    生活娱乐 WIFI机器人(某机器发烧友自己动手做一台)
    电脑技巧 ADSL如何远程盗号
    生活娱乐 VERYCD的T恤设计大赛
    系统重装 如何在固态硬盘上重装系统
    Visual Studio VS如何统计代码行数
    解决启动nginx时报80端口被占用的问题
  • 原文地址:https://www.cnblogs.com/caiwujia/p/net.html
Copyright © 2011-2022 走看看