• JS下高效拼装字符串的几种方法比较与测试代码


    在使用Ajax提交信息时,我可能常常需要拼装一些比较大的字符串通过XmlHttp来完成POST提交。尽管提交这样大的信息的做法看起来并不优雅,但有时我们可能不得不面对这样的需求。那么JavaScript中对字符串的累加速度如何呢?我们先来做下面的这个实验。累加一个长度为30000的字符串。 
    测试代码1 - 耗时: 14.325秒 

    复制代码代码如下:

    var str = ""; 
    for (var i = 0; i < 50000; i++) { 
    str += "xxxxxx"; 


    这段代码耗时14.325秒,结果并不理想。现在我们将代码改为如下的形式: 
    测试代码2 - 耗时: 0.359秒 

    复制代码代码如下:

    var str = ""; 
    for (var i = 0; i < 100; i++) { 
    var sub = ""; 
    for (var j = 0; j < 500; j++) { 
    sub += "xxxxxx"; 

    str += sub; 


    这段代码耗时0.359秒!同样的结果,我们做的只是首先拼装一些较小的字符串然后再组装成更大的字符串。这种做法可以有效的在字符串拼装的后期减小内存复制的数据量。知道了这一原理之后我们还可以把上面的代码进一步拆散以后进行测试。下面的代码仅耗时0.140秒。 
    测试代码3 - 耗时: 0.140秒 

    复制代码代码如下:

    var strArray = new Array(); 
    for (var i = 0; i < 100; i++) { 
    var sub = ""; 
    for (var j = 0; j < 500; j++) { 
    sub += "xxxxxx"; 

    strArray.push(sub); 

    str = String.prototype.concat.apply("", strArray); 


    不过,上面这种做法也许并不是最好的!如果我们需要提交的信息是XML格式的(其实绝大多数情况下,我们都可以设法将要提交的信息组装成XML格式),我们还能找能更高效更优雅的方法—利用DOM对象为我们组装字符串。下面这段代买组装一个长度为950015的字符串仅须耗时0.890秒。 
    利用DOM对象组装信息 - 耗时: 0.890秒 

    复制代码代码如下:

    var xmlDoc; 
    if (browserType == BROWSER_IE) { 
    xmlDoc = new ActiveXObject("Msxml.DOMDocument"); 

    else { 
    xmlDoc = document.createElement("DOM"); 

    var root = xmlDoc.createElement("root"); 
    for (var i = 0; i < 50000; i++) { 
    var node = xmlDoc.createElement("data"); 
    if (browserType == BROWSER_IE) { 
    node.text = "xxxxxx"; 

    else { 
    node.innerText = "xxxxxx"; 

    root.appendChild(node); 

    xmlDoc.appendChild(root); 
    var str; 
    if (browserType == BROWSER_IE) { 
    str = xmlDoc.xml; 

    else { 
    str = xmlDoc.innerHTML; 
  • 相关阅读:
    ObjectiveC语法快速参考
    IIS网站全部显示无权访问需要登录
    如何让自己的网站尽快收录绍兴114导航
    asp.net的运行原理
    WPF学习视频资料
    Asp.net MVC3 自定义HtmlHelper控件
    Unity3D中C#和JS的方法互相調用
    对于冒泡算法的思考,大牛可一笑而过~~
    2013年年前瞻望与计划
    使用vs2010编辑Unity脚本,配置方法
  • 原文地址:https://www.cnblogs.com/Gbeniot/p/4680597.html
Copyright © 2020-2023  润新知