本帖最后由 ivbnet 于 2012-05-16 02:06:38 编辑

解决方案 »

  1.   

    唠叨哥我放到linux上面跑也差不多啊。我怀疑是不是asp.net 空for是不是没处理去了。
    楼主能不能在for里加些什么运算吧。
      

  2.   

    你在linux上面也做了asp.net的测试?
    要使运行速度测试有效,至少也要在同一台机器上
    由于它的asp.net代码有问题,所以没有测试
    使用他原帖中的asp代码做对比
    的确是 asp 快于 php
    window2008 iis7.5 php5.3.6 fastcgi但这并不能说明什么问题,不就是一个空结构吗?
      

  3.   

    想到了鸟哥的一篇文章,说的是php编译执行的时候不做任何语义优化,上面的代码会忠实的loop10000000次,
    其它预编译语言会做语义优化,对这种空结构,优化之后或许就不对它进行循环了
    http://www.laruence.com/2012/04/01/2571.html
      

  4.   

    一个for语句比PHP快点就能说明asp.net比PHP 快。这也太那个什么的了吧。
      

  5.   


    刚看错了,是70倍,csdn里连自己回复的帖子都没有编辑和删除的权限,真是无语
      

  6.   

    asp.net 最吸引我的,也是我觉得最有用的地方是创建 web service太容易了,可以用于php,java,除此之外没啥突出亮点。貌似
      

  7.   


    asp.net代码没有问题吧,我测试成功的呀。
      

  8.   

    php 页面执行时间: 759.9 毫秒
    php 页面执行时间: 741.7 毫秒
    php 页面执行时间: 744.4 毫秒
    php 页面执行时间: 740.5 毫秒
    php 页面执行时间: 743.9 毫秒
    ------------------------------------------
    win7 iis7.5。fastCGI前面那个aspx的不能在网页下显示哈,有错误:
    编译器错误消息: BC30691: “DateTime”是“System”中的类型,不能用作表达式。
      

  9.   


    我用的是vs2005,没有问题呀,看我完整代码using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            System.DateTime startTime = System.DateTime.Now;
            for (long i = 1; i < 10000000; i++)
            {
            }
            System.DateTime endTime = System.DateTime.Now;
            System.TimeSpan ts = endTime - startTime;
            Response.Write("页面执行时间:" + ts.Milliseconds.ToString("0.000") + " 毫秒");    }
    }
      

  10.   


    没有啊。只是win与linux简单测一下。
    感觉php是老老实实都跑了一千万次……
      

  11.   

    可能asp.net for几次后就不for了、去打酱油了
      

  12.   

    这样有一定程序上提高了论坛活跃度。 =_=
    #14楼
    给for里加些运算操作吧、让他干点事再比较……
      

  13.   

    这样测试没意义,你每个web程序里只做一次运算,然后重复访问多次,这样:ab -c 100 -n 10000000 http://xxxx/test.php
    ab -c 100 -n 10000000 http://xxxx/test.aspx然后,再看一下结果。一般情况下,web应该先访问数据库,读出数据,做一个计算,再返回,这样比较才客观一些。做静态计算或读静态页面都没什么意义,设想一下如果php在Linux下用lighttpd做server读静态文件,那还怎么比。
      

  14.   

    没用过php,但是直觉来讲,这样是无法比较具体的效率的。如果PHP是解释型语言,没有预编译的过程的话,执行这样的操作肯定是会慢于编译型。
      

  15.   

    1,改为这样,测一下
    var n:long = 0;
    for (long i = 1; i < 10000000; i++)
    {
       n += i;
    }2,放到页面上面测。
      

  16.   

    我改变观点了
    既然您认为 asp.net 优于 php ,那么你就 asp.net 就是了,何必抢 phper 的饭碗
      

  17.   


    按需所取吧,这里讨论的只是在win平台的执行效率比较。说不定,win下跑asp.net还比不上linux下跑php呢。那时,你是不是也说只能用php而不用asp.net了呢?每种语言都有其优势的一面,而现在,单单懂一种语言的程序员是很少了吧。多一份了解,就多一份选择。
      

  18.   

    编译器会对空FOr优化的。所以你得加点运算。让它不优化
      

  19.   

    只能说明asp.net在大量for循环上面优化的比较好,但不能得出结论“asp.net运行速度比php快70倍”这个测试只是空循环,如果循环里面加上操作,就不见得是这个结果了。
      

  20.   

    PHP的实现的确是慢得可以.以至于像python和ruby这种以慢著称的语言都比它快...
    不过它胜在接口丰富,而且大多免费...
    再说了,搞个WEB应用而已,多数对性能不敏感,实在不行就喊客户加服务器嘛.有性能需求的,都直接用C++去了,谁还用PHP.
    另外,这个测试相对来说权威一点.http://shootout.alioth.debian.org/u32/bench.php?test=all&lang=all
      

  21.   

    空循环,是会优化的。加个测试,sm = 0;for i = 1:100000
      if rand >0.5 //这样,就彻底避免了编译器的对循环的特殊优化
            sm = sm + i;
       else
            sm = sm - i;
       end
    end
      

  22.   

    没理由呀, 我做过asp.net 与php多年, 总感觉php快很多。
    .net 要中间编译呀。  php 直接 -->  C
      

  23.   

    php执行常规的计算确实比其他语言慢,这是常识,没有啥奇怪的啊。它的优势不在这里。
      

  24.   

    楼主确定是for 循环完全执行完之后得到的systemtime endtime?
      

  25.   

    没有意义啊,这种编译器都做了优化的。基本没有等循环算完。
    我用过DELPHI测试,感觉觉得比C快。但编译器是明显自动优化了的。
      

  26.   

    php是每次访问都要编译的,他不会自己优化,需要程序员有好的编码习惯。php的空for循环是会编译的,而.net不会执行,所以php会慢一些。如果在for循环里加一些运算,二者的速度应该差不多。
      

  27.   

    汗 我怎么自己 用win8 IIS8 .net4.5 PHP5.32 测试 PHP 明显要比.NET块呢
      

  28.   

    加一个
    int tmp=0;
    for(...)
    {
    tmp = tmp+1;
    }
    在看看
      

  29.   

    C#,java 是编译语言,PHP是脚本语言(解释性语言)
      

  30.   

    应该使用stopwatch来监控,这种计算时间是错误的。