AMD2500+
512 DDR
生成复杂的HTML 数据量:10000;花费时间:516ms;

解决方案 »

  1.   

    学习
    mingxuan3000
        看不到图,是由于初始化数组的内容是数字,不要输字母就可以看到了
    BlueDestiny 
        limit方法可以改下,JS中有内置的slice方法就可以直接截取数组
      

  2.   

    初始化的时候有两个数组,但是其中的内容差不多,第二个数组和第一个数组差不多,而第二次循环造成执行时间长,大约100000就执行14秒了,这样初始化比较慢,稍稍改下,不过代码也不是很好,下面用了两次join,其实可以用一次然后用正则替换会更好些
    function fnInit() {
      window.sDataSource = "";
      window.nNumber = parseInt($("generateNumber").value);
      window.dataSource = new Array();
      var begin=new Date().valueOf(); for (var i=0; i<nNumber; i++) {
        dataSource[dataSource.length] = Math.random()*1000000;
      }; 
      aDataSource = "\xaf"+dataSource.join("\xbf\xaf")+"\xbf";
      sDataSource = "\xaf"+dataSource.join("\xaf");
      oProcess.value = "数据量:" +i+ ";花费时间:" +(new Date().valueOf()-begin)+"ms;";
    }
      

  3.   

    分析的很好,很有价值!“减小输出字符串的大小”让我想起用htc也许会更好! ^_^
      

  4.   

    JS的效率是个问题,不过终究其是script脚本嘛,javascript权威指南中也有不建议让其做耗时的操作。不过优化是肯定的,meizz的树文档中有很多优化的经典理论。包括需要时再生成,利用正则式进行快速查找,利用内置的joion()方法进行字符的快速处理等...不能不读啊。[BlueDestiny]最近怎么对JavaScript如此痴迷啊,有点走火入魔了,我最近陷入几个java项目中不能自拔了,抽不出身来玩了。郁闷。
      

  5.   

    数据量:100000;花费时间:16985ms;有时候数组运算的时候需要用s或者分钟来计算。。
    比较晕
      

  6.   

    呵呵,最近在研究自己的framework,比较小,所以分析了很多framework代码,包括兼容,效率,代码风格,美观,所有的这些都在范畴。所以也有些心得,XBL也看了,但感觉XBL与HTC来说,还是不要兼容XBL了,有些琐碎。
      

  7.   

    谢谢hb的提醒,我倒忘了Array有slice方法了:D
      

  8.   

    我原来试着用limit用在autocomplet上了,效率上可以大大的提高,但是也有一个问题就是控制比较麻烦,虽然用此方法理论上可以生成无限大的数量。如果纯理论研究,抛开应用,那么JS的效率仍然可以大大的提高,可以有slice,concat来拼合数组,把循环减少到最低。也就是把循环减少一个数量级。
      

  9.   

    生成复杂的HTML(已经包括事件和CSS)
    正则匹配Match(有循环)
    10000 数据量:10000;花费时间:781ms;P4 2.4 512DDR
      

  10.   

    也做了一个combox,三千条时,基本上看不出反应时间。
    代码太长,跟自己的以前combox比较,不同有:注1:EditableSelect4不是EditableSelect1的升级版,而是互补版,主要目的是想提高效率,支持3000或更多条选项,功能上有以下不同:
      a.可以达到,在3000或更多条选项选项时,反应时间在一秒内。
      b.输入长度大于0时才将过滤后的选项列出。
      c.先只列出可见的十二条,scroll时列出200条,如果还有更多,让用户决定是否将所有的选项列出。
      d.舍弃“相等优先于相似”的功能。代码太长,贴出来怕浪费空间,
    晚上下班后我放到我的blog上让大伙批批。
      

  11.   

    我觉得 数组最大不要超过1w条,否则很容易挂的,优化方法楼上也说了meizz树里面就用字符串来代替大数组,等等好多方法,我觉得更加好的解决方案就是不要把数据全部加载啊,可以分批加载,分批处理,数据库的数据大了还分区处理呢
      

  12.   

    @jkc.先只列出可见的十二条,scroll时列出200条,如果还有更多,让用户决定是否将所有的选项列出。
    我原来也想用limit方法,感觉应该和你上面说的意思差不多,主要就是为了尽可能是输出少量的HTML,而scroll或者down或者up时,再把数据动态加入。后来一看,1w条数据量情况下,在匹配数据1000到2000条之间,HTML的字符串也算太大,不到一秒就可以出来了。(约在300-500ms之间)@patchclass(黑翼) 
    1w条数据一般初始化之后匹配输出的速度还是可以令人接受的。同上的匹配数据1000到2000条之间
      

  13.   

    谢谢!http://blog.never-online.net/uploads/200608/09_002205_match.png
    正则表达式中的"$"好像要用"\$"转意吧
      

  14.   

    JK_10000(JK) ( ) 信誉:121  2006-08-10 15:05:00  得分: 0  
     
     
       也做了一个combox,三千条时,基本上看不出反应时间。
    代码太长,跟自己的以前combox比较,不同有:注1:EditableSelect4不是EditableSelect1的升级版,而是互补版,主要目的是想提高效率,支持3000或更多条选项,功能上有以下不同:
      a.可以达到,在3000或更多条选项选项时,反应时间在一秒内。
      b.输入长度大于0时才将过滤后的选项列出。
      c.先只列出可见的十二条,scroll时列出200条,如果还有更多,让用户决定是否将所有的选项列出。
      d.舍弃“相等优先于相似”的功能。代码太长,贴出来怕浪费空间,
    晚上下班后我放到我的blog上让大伙批批。
      
     
    ------------------
    MSN 的 blog很慢,
    上传了一些代码到上面去了。http://jkisjk.spaces.live.com/?_c11_BlogPart_blogpart=blogview&_c=BlogPart&partqs=cat%3dDhtml%2b(Some%2bDhtml%2bCode%2b---JK---%2b)
      

  15.   


    初始化的时候有两个数组,但是其中的内容差不多,第二个数组和第一个数组差不多,而第二次循环造成执行时间长,大约100000就执行14秒了,这样初始化比较慢,稍稍改下,不过代码也不是很好,下面用了两次join,其实可以用一次然后用正则替换会更好些
    function fnInit() {
      window.sDataSource = "";
      window.nNumber = parseInt($("generateNumber").value);
      window.dataSource = new Array();
      var begin=new Date().valueOf(); for (var i=0; i<nNumber; i++) {
        dataSource[dataSource.length] = Math.random()*1000000;
      }; 
      aDataSource = "\xaf"+dataSource.join("\xbf\xaf")+"\xbf";
      sDataSource = "\xaf"+dataSource.join("\xaf");
      oProcess.value = "数据量:" +i+ ";花费时间:" +(new Date().valueOf()-begin)+"ms;";
    }
      

  16.   

    生成复杂的HTML 数据量:10000;花费时间:2164ms;
    生成简单的HTML 数据量:10000;花费时间:2023ms;
      

  17.   

    @amingo其实是怪我没有说清楚,测试数据不是说的是这里,而是指匹配时的速度,我看到有几个朋友都是出了这个数据...初始化时,我采用了三种方法,把数据存进了三个变量里,匹配时,也有三种方法可以选择,初始化的时间几乎都差不多的,主要看匹配时的速度。
      

  18.   

    我这里的匹配速度,我测的10000条数据,有效数据为1000-1100条,输出复杂的HTML,速度为360ms左右,方法为 正则匹配Match(有循环)
      

  19.   

    没什么经验,偶直接调用jsvalidation
      

  20.   

    Processor: Intel(R) Pentium(R) M processor 1.73GHz
    Memory: 758MB RAM
    数据量:100000;花费时间:16094ms;
      

  21.   

    Array.prototype.limit 纯属多余,js有内置方法 arrayObj.slice(start, [end])