我不確定哪種方法更快地使用多次,用很多字符串變量進行測試。
哪些更快用於檢查字符串是否只是空格?字符串比較比字符串長度更快嗎?
if (str.trim().length > 0) {
}
或者
if (str.trim() !== '') {
}
我不確定哪種方法更快地使用多次,用很多字符串變量進行測試。
哪些更快用於檢查字符串是否只是空格?字符串比較比字符串長度更快嗎?
if (str.trim().length > 0) {
}
或者
if (str.trim() !== '') {
}
那麼,爲什麼不考呢? http://jsperf.com/empty-string-comparison2
就每秒計算而言,它們相差不到1%(至少在Chromium上)。除非你每秒都在測試數百萬個字符串,否則我不會擔心。
我相信字符串Lenght比較快的比較兩個字符串的比較。
你爲什麼這麼認爲? – 2013-02-27 04:17:31
看到我下面的答案 – 2013-02-27 04:55:43
簡短的答案是「基準和找出!」。如果你這樣做,你也可以嘗試使用正則表達式,看看如何快速那就是:
if (str.match(/^\s*$/))
簡短的回答或評論..大致相同。 – 2013-02-27 04:23:34
由於我們預優化,不應該這是'/^\ s * $ /。test(str)'?當然,返回布爾值比結果數組快! ;) – kojiro 2013-02-27 04:30:00
根據Alex 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);
的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>
使用編輯發佈新問題的答案 – 2013-02-27 05:24:46
是的。謝謝你的建議。 – 2014-01-17 05:06:41
感謝您的設置,但您沒有發佈任何測試結果。我做了一些測試,並得到了一些非常有趣的結果。大多數時候,長度比較實際上比較慢一點。即使琴絃很長,幾乎相同。實際上,奇怪的是,讓字符串變長會讓字符長度比較慢。然後我試着比較字符串'222222'和'2',這次完整的字符串比較花費的時間幾乎是長度比較的兩倍! – Moss 2014-08-15 21:36:27
它不會有所作爲。在爭論之前,請構建一個[jfperf](http://jsperf.com)測試用例。然後認識到任何這樣的微觀基準 - 即使它們表現出「巨大差異」 - 通常在更大範圍內完全不相關。 – 2013-02-27 04:21:36
謝謝!我從來沒有聽說過這個網站。 – jackcogdill 2013-02-27 04:24:06
Javascript問題標記爲.NET的一個重複? :/ – nawfal 2014-01-15 17:08:52