如何用最短的JavaScript代碼消耗最多的時間?

在V2上看到了這樣一個問題

如何用最短的JavaScript代碼消耗最多的時間?

讓函數 f 運行 10s 以上,最終輸出 true,代碼越短越好。(不能有交互。)

// 挑戰目標:讓函數 f 運行 10s 以上,代碼越短越好
function f() {
  // 在此寫入你的代碼:
  // ...
  

}

(function() {
  var now = Date.now;
  var t1 = now();
  f();
  var t2 = now();
  console.log(t2 - t1 > 10000);
})();

首選當然是這種調調↓ 能拖一秒算一秒

function f() {
// 在此寫入你的代碼:
// ...
setTimeout(()=>{alert("10 秒過了")},10000)
}

但是想想並不妥,在 setTimeout 將函數和數值交給 WebAPI 了以後 f() 就退出了。而上述測試代碼是看 f() 運行前後的時間差。

如果允許加載一段外部 js 的話~~~~~
隨便掛一段挖礦病毒進去吧!(不過最近好像比較賠錢……算了

無法匹配正則是最消耗時間的:

function f1() {
return /(x+x+)+y/.exec("xxxxxxxxxxxxxxxxxxxx") || true; // 10s
}
function f2() {
return /(x+x+)+y/.exec("xxxxxxxxxxxxxxxxxxxxx") || true; // 20s
}

不對單位好像錯了……

再來一個

單位錯了,是 10ms 和 20ms
增加到 30 個 x 可以超過 10s

function f3() {
return /(x+x+)+y/.exec("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") || true; // > 10s
}

再不行只能逼我出絕招了!

function f() {
alert("hello world --joynop!")
}

(function() {
var now = Date.now;
var t1 = now();
f();
var t2 = now();
console.log(t2 - t1 > 10000);
})();

阻斷就行了,你不點想要多久都 ok

嘖嘖嘖

等會……

是讓 CPU 跑十秒?

還是讓瀏覽器窗口卡十秒??

文章同步來源:www.joynop.com/62.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章