第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

性能優(yōu)化的問題

我的優(yōu)化代碼如下:

//????優(yōu)化balls數(shù)組
????????????var?count=0;
????????????for(var?i=0;i<balls.length;i++)?{
???????????????if?(balls[i].x?<?-R?||?balls[i].x?>?WINDOW_WIDTH?+?R)?{
????????????????????balls.splice(i,1);
????????????????}
????????????}

這樣思維比較簡(jiǎn)單,就是把不符合要求的小球清除出去。

但是實(shí)際運(yùn)行效果是,balls的長(zhǎng)度大概維持在450-500之間。

我覺得這兩個(gè)效果大概是一樣的啊。這是不是說明這樣寫的性能不是很高?

為什么會(huì)有這個(gè)性能上的區(qū)別?

正在回答

5 回答

我也出現(xiàn)下圖的情況。所以增加了一個(gè)大于1000個(gè)球的判斷。

? ? while(balls.length > cnt || balls.length > 1000){ //刪除cnt-1 后面的球 .刪除超過1000的球

? ? ? ? balls.pop();

? ? }



0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

BigListener 提問者

非常感謝!
2015-07-28 回復(fù) 有任何疑惑可以回復(fù)我~

算法的復(fù)雜度問題了~謝謝

0 回復(fù) 有任何疑惑可以回復(fù)我~

我想這樣做的效率應(yīng)該是比較低的,我不知道splice函數(shù)具體是怎樣實(shí)現(xiàn)的,但是如果是數(shù)組的刪除的話,你在數(shù)組中刪除了一個(gè)元素,其他元素需要進(jìn)行前移,才能保證數(shù)組中間不會(huì)有空,這樣你刪除n個(gè)元素就移動(dòng)了n*(n的位置后面的元素個(gè)數(shù))個(gè)元素,而老師的方法是賦值之后再pop,理論上講最多也就length那么長(zhǎng)咯,所以是O(n),splice很容易就O(n方)了吧

0 回復(fù) 有任何疑惑可以回復(fù)我~

改寫成requextAnimationFrame 沒有這個(gè)問題

0 回復(fù) 有任何疑惑可以回復(fù)我~

還有一個(gè)問題就是,如果電腦不是一直在那個(gè)頁面。那么性能優(yōu)化代碼好像就不工作。會(huì)出現(xiàn)這種情況:

54c32fc20001c00f05000225.jpg

麻煩各位誰懂的,給解釋一下!

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

哦哦噠

這個(gè)應(yīng)該是每個(gè)瀏覽器對(duì)setInterval的一個(gè)優(yōu)化吧,當(dāng)離開瀏覽器窗口的時(shí)候會(huì)默認(rèn)暫停動(dòng)畫效果以節(jié)約系統(tǒng)資源諸如內(nèi)存,CPU,然后再回來的時(shí)候會(huì)對(duì)已經(jīng)運(yùn)行的動(dòng)畫效果運(yùn)用JS計(jì)算達(dá)到?jīng)]有好像沒離開過一樣,但是由于離開的這段時(shí)間其實(shí)這個(gè)Demo依然在做一些事情,所以就發(fā)生了這個(gè)bug,大概是這樣,具體原因可以百度一下瀏覽器對(duì)setInterval的處理相關(guān)方面的知識(shí)
2015-08-21 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

性能優(yōu)化的問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)