Javascript的字符串连接比这个例子快?

我来连接一串字符串在Javascript并正在寻找这样做的最快方法。 让我们假设JavaScript有创造一个大的基于XML“文件”的,自然的,由许多小的字符串。 所以,我想出了:

var sbuffer = []; for (var idx=0; idx<10000; idx=idx+1) { sbuffer.push('<xmltag>Data comes here... bla... </xmltag>'); } // Now we "send" it to the browser... alert(sbuffer.join(”));

不支付任何注意循环或其他“复杂”的代码,建立了范例。

我的问题是:对于一个未知数量的字符串,你有一个更快的算法/方法/理念来连接许多小串了巨大的吗?

--------------解决方案-------------

更改线路:

sbuffer.push('Data comes here... bla... ');

sbuffer[sbuffer.length] = 'Data comes here... bla... ';

给你5%-50%的速度增益(取决于浏览器,在IE浏览器 - 增益为最高)

问候。

这个问题的JavaScript字符串连接有一个接受的答案链接到JavaScript的字符串连接性能很好的对比。

编辑:我还以为你可以伊克通过使用达夫设备作为文章建议多一点的表现。

我认为你是相当接近最佳。 情况因人而异,大量速度的获得或宿主进程(例如浏览器)的JavaScript引擎中消失。

我认为,推到一个数组中的字符串,然后加入数组是最快的技术在JavaScript字符串连接。 有大约在W3C DOM与innerHTML的这个讨论中,一些证据支持。 注意innerHTML的1和2的innerHTML结果之间的差异。

据我所知,你的算法是好的,被称为高性能的解决方案,以字符串连接问题。

谨防IE糟糕的垃圾收集器! 那你该做的使用后,您的阵列? 也许它会得到GC'd?

你可以得到与加入串联perfornace,然后输上后GC'ing。 在另一方面,如果你离开的范围数组所有的时间,并不能重用它,这可以是一个很好的解决方案。

我个人想的simpliest解决方案:只需使用+ =运算符。

你可能会得到多一点的速度缓冲。

分类:JavaScript的 时间:2012-01-01 人气:0
本文关键词: 性能,JavaScript中,加入
分享到:

相关文章

  • 动态VS在JavaScript中内嵌正则表达式的性能 2012-05-22

    我偶然发现了性能测试,他说,在JavaScript中的正则表达式不一定慢:http://jsperf.com/regexp-indexof-perf 有一件事我没有得到,虽然二例涉及的东西,我认为是完全一样的: RegExp('(?:^| )foo(?: |$)').test(node.className); 和 /(?:^| )foo(?: |$)/.test(node.className); 在我看来,这两条线都是一模一样的,第二个是某种速记创建一个RegExp对象. 不过,这是比第一个快两

  • 什么是“使用严格的”做在JavaScript中,什么是它背后的原因? 2012-01-15

    最近,我跑我的一些JavaScript代码通过Crockford的JSLint的,它给了以下错误: 问题1行字符1:缺少"使用严格"语句. 做一些搜索,我意识到有些人添加"use strict";到他们的JavaScript代码. 有一次,我加的说法,错误停止出现. 不幸的是,谷歌并没有透露太多这背后字符串声明的历史. 当然,它必须有事情做有多大的JavaScript是由浏览器解释,但我不知道效果会怎样. 那么,什么是"use strict";一

  • 用于描述在JavaScript中成员和容器之间的关系最恰当的说法 2012-02-01

    在JavaScript中,你可以考虑两个对象之间的关系,要像一个"容器"和"成员". 例如: var c1 = {m:1}; function C() {this.m = 1;} var c2 = new C(); function C() {var m = 1;} var c3 = new C(); 在上述每种情况下有c对象和m个对象之间的关系. 可以说,在M是C1 的静态成员尚属首例. 在第二种情况下,m为c2的一个实例成员. 而在第三种情况下m是C3 的内构件

  • 有时object.setAttribute(ATTRIB,价值)并不等同于object.attrib = javascript中的价值? 2012-02-29

    看来,有时object.setAttribute(ATTRIB,价值)并不等同于object.attrib = javascript中的价值? 我有下面的代码,它工作正常: var lastMonthBn = document.createElement('input'); lastMonthBn.value='<'; // This works fine lastMonthBn.type='button'; // This works fine 但是,下面的代码不会: var div = do

  • 我如何获得UTC时间戳在JavaScript中? 2012-04-19

    在编写Web应用程序,它是有道理的存储(服务器端)在DB 的所有日期时间为UTC时间戳. 我感到很惊讶,当我注意到,你本身不能做太多的在Javascript时区操纵条款. 我延长日期对象一点点. 请问这个功能有意义吗? 基本上,我每次送东西到服务器时,它会与这个功能格式化时间戳... 你可以在这里看到什么大的问题? 或者,也许从不同的角度的解决方案? Date.prototype.getUTCTime = function(){ return new Date( this.getUTCFullY

  • 如何排序它在Javascript中值的关联数组? 2012-05-15

    我有关联数组: array["sub2"] = 1; array["sub0"] = -1; array["sub1"] = 0; array["sub3"] = 1; array["sub4"] = 0; 什么是最优雅的方式进行排序(递减),其价值在哪里,结果将与按此顺序各指标的数组: sub2, sub3, sub1, sub4, sub0? --------------解决方案------------

  • 在JavaScript中快速阶乘函数 2012-05-15

    寻找在JavaScript中一个真正快速实现阶乘函数 . 任何建议? --------------解决方案------------- 您可以搜索(1 ... 100)! 上WolframAlpha的预先计算的阶乘序列. 第100号是: 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368000, 20922789888000, 35

  • 在JavaScript中,你如何寻找一个数组的字符串匹配 2012-06-01

    我需要寻找在JavaScript的数组. 搜索将是唯一的字符串相匹配的字符串将分配给它addtional号码的一部分. 然后,我需要与完整的字符串返回成功匹配数组元素. IE浏览器. var windowArray = new Array ("item","thing","id-3-text","class"); 我需要寻找与它"ID-"数组元素,我需要拉文本的其余部分中的元素,以及(即"ID-3

  • 在JavaScript中,什么是取舍内嵌定义函数与将它作为一个参考? 2012-06-20

    所以,让我们说我有一个大集,而我希望把事件侦听器的元素. 例如,我想点击时每行变红表. 所以我的问题是,这些是最快的,而且它使用最少的内存. 据我所知,这是(通常)的权衡,所以我想知道我的每个最佳选择. 使用该表的例子,假设有所有行的元素,"rowList"列表: 选项​​1: for(var r in rowList){ rowList[r].onclick = function(){ this.style.backgroundColor = "red" }; }

  • JavaScript中,与第二个参数排序更快 2012-06-29

    我做了一个小的测试,并且发现了array.sort(function(a, b) { return a - b; });是不是快很多array.sort();在JavaScript中. 结果是相当震撼,快约1.7倍,IE9,在FF7 1.6倍,在Chrome 6.7倍. 此外,通过在JS落实自己快速排序,我发现它比上面提到的两种方法甚至更快. (两种不同的实现,一是接受比较器函数作为参数,另一个没有.两人都是快.) 有没有合理的解释? 编辑:我的实现: 没有比较器: function quick

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.833 (s). 10 q(s)