最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js 優(yōu)化次數(shù)過多的循環(huán) 考慮到性能問題

 更新時間:2011年03月05日 23:55:15   作者:  
IE沒有我們想象中笨,它知道總的循環(huán)次數(shù)還是一千萬次。因此,得把這一百個十萬次循環(huán)分開執(zhí)行。雖然Javascript是單線程的,但也可以通過setTimeout或setInterval模擬多線程。
假設(shè)要生成一千萬個隨機(jī)數(shù),常規(guī)的做法如下:
復(fù)制代碼 代碼如下:

var numbers = [];
for (var i = 0; i < 10000000; i++) {
  numbers.push(Math.random());
}

然而,在IE下執(zhí)行這段代碼時,卻彈出了一個窗口提示用戶是否停止這段腳本。出現(xiàn)這種情況,首先想到的是優(yōu)化循環(huán)體。但明顯地,循環(huán)體很簡單,沒什么優(yōu)化的余地。即使把循環(huán)體清空,提示仍然存在。于是,我得出了一個結(jié)論:在IE下,一旦循環(huán)次數(shù)超過了某個特定值,就會彈出停止腳本的提示。

原因找到了,該如何解決呢?我首先想到的是把一千萬次循環(huán)分成若干個次數(shù)較少的循環(huán)。比如分成一百次,每次執(zhí)行十萬次循環(huán):
復(fù)制代碼 代碼如下:

for (var i = 0, j; i < 100; i++) {
  for (j = 0; j < 100000; j++) {
    ......
  }
}

IE沒有我們想象中笨,它知道總的循環(huán)次數(shù)還是一千萬次。因此,得把這一百個十萬次循環(huán)分開執(zhí)行。雖然Javascript是單線程的,但也可以通過setTimeout或setInterval模擬多線程。整段代碼優(yōu)化如下:
復(fù)制代碼 代碼如下:

var numbers = [];
function begin() {
  for (var i = 0; i < 100000; i++) {
    numbers.push(Math.random());
  }
  if (numbers.length < 10000000) { // 是否已完成
    setTimeout(begin, 0);
  } else {
    alert("complete");
  }
}
begin();

相關(guān)文章

最新評論

邯郸县| 尉犁县| 白水县| 容城县| 平南县| 太仓市| 张北县| 祁连县| 新民市| 饶平县| 西吉县| 辽宁省| 萝北县| 桐城市| 克东县| 韶关市| 历史| 涡阳县| 萍乡市| 鲁山县| 齐河县| 咸丰县| 邵阳市| 福安市| 衡山县| 丹东市| 新沂市| 治多县| 桂林市| 固阳县| 英吉沙县| 封丘县| 什邡市| 抚顺县| 驻马店市| 福州市| 石泉县| 衡东县| 富蕴县| 长葛市| 渭南市|