zoukankan      html  css  js  c++  java
  • 关于代码的性能问题

    请指出一下代码的性能问题,并经行优化。
       var info="腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站。";
       info +="拍拍网于2005年9月12日上线发布,";
       info +="2006年3月13日宣布正式运营,";
       info +="是目前国内第二大电子商务平台。";
       info=info.split(",");
       for(var i=0; i<info.length; i++)
        {
           alert(info[i]);
        }

     

    首先,需要了解字符串的特点。

    字符串是不可变的,也就是说,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。

    例如: var lang = "Java";

               lang = lang + "Script";

    实现这个操作的过程:1、创建一个能容纳10个字符的新字符串。

                                2、在这个字符串中填充"Java" 和"Script";

                                3、销毁原来的字符串"Java"和"Script";

    这个过程是在后台发生的,而这也是在某些旧版本的浏览器(IE、版本低于1.0的firefox)中拼接字符串时速度比较慢的原因所在。

     

    优化:1、由于字符串相加比较慢,所以可以考虑直接把所有字符写在同一个变量中。

             2、仔细考虑这段JS需要实现的功能,会发现,其实完全可以用一个数组来存储,然后遍历数组输出,这样效率会提高很多,因为省去了info=info.split(",");执行所要消耗   的时间。

             优化结果如下

      <script type="text/javascript">
      var info = new Array();
      info[0] = "腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站。拍拍网于2005年9月12日上线发布";
      info[1] = "2006年3月13日宣布正式运营";
      info[2] = "是目前国内第二大电子商务平台。";
      
      for(var i = 0; i < info.length; i++) {
       alert(info[i]);
      }
      </script>

  • 相关阅读:
    SQL Server 删除重复数据只保留一条
    英语冠词有哪些?
    英语基本语法
    统一身份认证服务(客户端用户身份验证)
    解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后丢失的问题
    统一身份认证服务 源码(客户端)
    MVC 如何设定默认默认路由为指定的Area下的某个action(笔记)
    MongoDB安装笔记
    消息队列第二篇:MessageQueue实战(课程订单)
    消息队列第一篇:MessageQueue介绍
  • 原文地址:https://www.cnblogs.com/yingsmirk/p/2392497.html
Copyright © 2011-2022 走看看