多くの文字列変数でテストして、これらの方法のどれが複数回使用するのが速いかはわかりません。
文字列が単なる空白かどうかを確認するために使用するのに、これらのうちどれがより高速ですか?
if (str.trim().length > 0) {
}
または
if (str.trim() !== '') {
}
多くの文字列変数でテストして、これらの方法のどれが複数回使用するのが速いかはわかりません。
文字列が単なる空白かどうかを確認するために使用するのに、これらのうちどれがより高速ですか?
if (str.trim().length > 0) {
}
または
if (str.trim() !== '') {
}
さて、それをテストしてみませんか?http://jsperf.com/empty-string-comparison2
1 秒あたりの計算に関しては、1% 未満の差です (少なくとも Chromium では)。毎秒何百万もの文字列をテストしていない限り、私は心配しません。
簡単に言えば、「ベンチマークして調べてください!」です。これを行う場合は、正規表現を使用してみて、それがどれほど速いかを確認することもできます。
if (str.match(/^\s*$/))
アレックスDが提案したように、この高速テストの正規表現によると、より高速です。
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);
文字列の長さの比較は、2つの文字列の比較よりも速いと思います。
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>