字符串比较比字符串长度快吗?

时间:2013-02-27 04:15:01

标签: javascript string performance comparison string-comparison

我不确定哪种方式使用多次更快,使用大量字符串变量进行测试 哪个更快用于检查字符串是否只是空格?

if (str.trim().length > 0) {

}

或者

if (str.trim() !== '') {

}

5 个答案:

答案 0 :(得分:7)

那么,为什么不试试呢? http://jsperf.com/empty-string-comparison2

就每秒计算而言,它们相差不到1%(至少在Chromium上)。除非你每秒测试数百万个字符串,否则我不会担心它。

答案 1 :(得分:2)

简短的回答是“基准并找出答案!”。如果你这样做,你也可以尝试使用正则表达式,看看它有多快:

if (str.match(/^\s*$/))

答案 2 :(得分:2)

根据这个快速测试,Alex D建议的正则表达式更快。<​​/ p>

string = "   l   l l sfsf  __ ";
d = new Date().getTime();
for(var i = 0; i < 900000; i++){
    if (string.trim().length > 0) continue;
}
d1 = new Date().getTime() - d;
alert(d1);
d = new Date().getTime();
for(var i = 0; i < 900000; i++){
    if (string.trim() !== '') continue;
}
d1 = new Date().getTime() - d;
alert(d1);
d = new Date().getTime();
for(var i = 0; i < 900000; i++){
    if (string.match(/^\s*$/)) continue;
}
d1 = new Date().getTime() - d;
alert(d1);

答案 3 :(得分:1)

我认为与两个字符串的比较相比,字符串长度比较更快。

答案 4 :(得分:1)

JSFiddle:http://jsfiddle.net/pja77gzp/

<script>
    var s1 = '  ';
    var s2 = '  ';
    var benchmarkCount = 10000000;
    function testStringComparison() {
        var t = new Date();
        var i = 0;
        for (var i = 0; i < benchmarkCount; i++) {
            if (s1.trim().length == s2.trim().length) {
                i++;
            }
        }
        t = (new Date()) - t;
        document.writeln("testStringComparison completed");
        document.writeln(t);
    }

    function testStringLenght() {
        var t = new Date();
        var i = 0;
        for (var i = 0; i < benchmarkCount; i++) {
            if (s1.trim() == s1.trim()) {
                i++;
            }
        }
        t = (new Date()) - t;
        document.writeln("testStringLenght completed");
        document.writeln(t);
    }


    function startBenchmark() {
        testStringComparison(); 
        testStringLenght();
    }

    setTimeout(startBenchmark, 1000);

</script>