对于这个奇怪的头衔很抱歉,我确定之前有人问过类似的东西。我的问题是,我正在构建一个包含html标签的字符串,我的问题是更好地测试和添加额外的标签,在这种情况下是<br />
,或者无论如何添加标签并拥有& #39;清除&#39;最后一行,哪个更快?:
所以目前我们已经
了bFirst = true;
label = '';
if(...)
{
if (!bFirst)
label += '<br/>';
label+= 'some more text'
}
if(...)
{
if (!bFirst)
label += '<br/>';
label+= 'some more text'
}
依旧......
或
if()
{
label+= 'some more text <br />'
}
然后使用string.substring()方法删除最后一个<br />
。
哪个更快,更好,更正确?我不需要代码,这实际上是一个性能问题,我可以测试一下,但我确定之前有人这样做了。
感谢。
答案 0 :(得分:1)
您可以使用此过程定义哪种方式最快:
这样的插件您必须执行这两页:
添加所有额外文字,然后修剪一些:
<div id ="concat"></div>
<script type="text/javascript">
var someText = ""
// adds "foo" 10k times
for (i = 0; i < 10000; i++) {
someText += "foo"
}
// crops the 3 last characters off the string 5k times
for (i = 0; i < 5000; i++) {
someText.substr(someText.length - 3, someText.length);
}
// append the final string
$('#concat').append(someText);
</script>
在我的浏览器上,需要0.19秒到0.30秒。
在需要时添加额外的文字
<div id ="if"></div>
<script type="text/javascript">
var someText = ""
var append = true;
for (i = 0; i < 15000; i++) {
//adds "foo" the first 10k times
if(append == true){
someText += "foo";
}
if(i == 10000){
append = false;
}
}
$('#if').append(someText);
</script>
此代码重复15k次,只添加&#34; foo&#34;前10k次。
执行此类代码的时间可能介于0.10和0.12秒之间
<强>结论强>
只有在需要时才向字符串添加内容似乎是性能方面更好的选择。 此外,就代码可读性而言,应使用第二个选项。
答案 1 :(得分:0)
快速简单的分析:
label = label.substring(...)
)计算字符数,如果您想要第一个 N 字符,String.prototype.substring()
将<在读取 N 字符字符时,em>可能计算 N 次。最后,分配/重新分配内存。现在哪种策略效率更高?
如果您仍有疑问,请在计时器下尝试这两种方法。