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

為了賬號安全,請及時(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);
????????????????}
????????????}

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

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

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

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

正在回答

5 回答

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

? ? 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ù)組中刪除了一個元素,其他元素需要進(jìn)行前移,才能保證數(shù)組中間不會有空,這樣你刪除n個元素就移動了n*(n的位置后面的元素個數(shù))個元素,而老師的方法是賦值之后再pop,理論上講最多也就length那么長咯,所以是O(n),splice很容易就O(n方)了吧

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

改寫成requextAnimationFrame 沒有這個問題

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

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

54c32fc20001c00f05000225.jpg

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

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

哦哦噠

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

舉報(bào)

0/150
提交
取消

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

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

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

幫助反饋 APP下載

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

公眾號

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