切換
舊版
前往
大廳
主題

RM MV學習筆記(20) javascript的效能

路漫行 | 2018-04-10 16:29:18 | 巴幣 4 | 人氣 393


因為我老闆(?)非常重視code執行的效率,每天都要跟我講好多次他很重視效能,他不接受他遊戲會卡卡的,常常盯著我的行數說人家都可以用你一半的行數寫出相同的效果...ect

我幫他寫了兩個插件,只用了一次迴圈,是能慢到哪裡去...

雖然我OS是這樣的,當然不會真的跟他說啦,

總之我還是去Google了一下如何提高JS效能,


裡面有一段(原文廣告多,所以貼個圖)




拖慢JS的元兇就是new Function啊!!!

MV裡面底層滿滿都是new Function啊!!!

當然我也是用new Function,沒辦法整體規則就是這樣,那我只能說new的時候選越底層的越好...會比較快一點。可以用base就用base...


另外YEP很愛用eval,所以真的很重視效率的話,YEP可能用越少越好...

PS.原文還有一段:

"
有些文章中提到,變數的名稱太長和註解會造成效能下降,然而實際上測試完全沒有影響,可以放心的使用。
"

嗯哼哼哼,所以註解寫很多是沒有問題的


雖然我這篇看起來在偷表他,但我是很感謝他,教了我一招:

console.time('1')

~CODE~

console.timeEnd('1');

可用來檢測中間CODE執行時間,挺不錯的。



不是很重要的補記:

我決定把之前自己寫的介面插件通通停用,找時間在重新寫過一次...



其餘的相關文件:

送禮物贊助創作者 !
0
留言

創作回應

未来ずら
額,生成物件那邊我想是限定"Function物件",就是需要臨時計算的時候( 像Array.forEach() )
其他像Sprite、Bitmap、Game_Actor之類的還是得老實的用new
(起碼我不知道怎麼用function() {}做成那些實體)

還有效能這種東西,比起"用了什麼"更要注意的是"用的時機"
或許eval很吃效能,但只在啟動遊戲時用了一次,那沒什麼問題
然而如果都放在update,當然卡到翻掉(這邊說的update是指"無條件每F都執行"的情況)

可能你只用了一個迴圈,但這個迴圈內做了什麼、還有迴圈會在什麼情況下執行,這些也是要注意的
(像過去版本,新手最常做的就是把Bitmap.draw_text()這種很耗時的方法丟update)
2018-04-10 21:41:45
路漫行
感謝經驗分享

我的迴圈只跑了一個依序顯示當前隊伍行走圖,應該...還好吧...

不用new的話,我就完全不會寫了...
所以還是只能乖乖去new
2018-04-10 22:22:06
八龍易主(´・ω・`)つ
但是
JS在ECMscript6的時候
也就是2016年 不是有加入Class類嗎?
2018-12-11 21:54:49

更多創作