游戏掉帧,怎么排查是哪部分代码导致的?

cocos2
像图中的 FPS 只 36, Frame Time 是26,怎么定位是哪些操作导致 frame time 太高了?

— 更新 —
DC 优化后,fps 还是很低
cocos5

二分屏蔽代码法

2000+dc?

可以试试先把dc降下去

drawcall 太高了,可以先优化,优化完可能就不掉帧了

不说dc,逻辑帧都5毫秒。

还好把,一些割草游戏有可能,不过他那个dc确实高

5毫秒在手机上能玩?特别是苹果手机。

我不太明白,逻辑帧5ms很大吗? 60fps 每帧间隔不是16ms吗?能否细讲一下

笑死我了哈哈哈,你这头像配上你回复

你说的是帧率吗?按照这个算的话,上面截图中的Framerate也不会是36啊。具体的cocos内部怎么算这个Game Logic的我也没看,但是根据经验,Game Logic超过4毫秒,在苹果手机上跑就卡顿啦。当然这个Game Logic高也可能是dc造成的。

先把DC降到200以下。 再用 Chrome 的 Performance 看。

确实dc太高了

cocos5
dc 优化了,但是fps还是很低呢

可以通过浏览器的F12调试工具的【性能】面板查看每帧中对应函数的执行占用时间。
image

1赞

framedrop
dropframe
这边看到每一帧里的执行之间并不长,时间完全够的,但还是出现了有些帧被跳过的情况

看上去是因为和显示器帧率垂直同步了,浏览器强制锁帧了。你显示器的刷新率是多少hz的?

看下这个参数,在一部分显示器上,chrome浏览器的requestAnimationFrame函数执行时间会和主显示器的刷新率强制同步,浏览器发出渲染后,要等待显示器的渲染完成才会调用js的下一帧,所以js的帧率【可能】是无法超过显示器的刷新率。
image

macbook M系列 笔记本
用的游览器是X64
换新版的原生支持M处理器的游览器

display