2.4.2 CPU占用率大幅度增加,发热耗电严重很多

考虑是不是要回滚版本了, 升级引擎花了3天时间改bug,太折腾了。

感谢,有用

效果很明显

2.4.4 正在开发游戏中,测试机子也是华为和vivo,发热严重,正头疼着呢,你是直接使用别人的github上的引擎了么,改哪里,没怎么听懂,麻烦了,请教下,改的哪里

先看看是不是websocket的问题,是的话,就把pr里面改动的地方还原成改动前的代码。
即把
lws_service(__wsContext, 4);
改回
lws_service(__wsContext, 2);
std::this_thread::sleep_for(std::chrono::milliseconds(3));

(大概是这样,没具体看)
同时也要注意一下注释的问题,是不是对你的项目有影响。

1赞

好的,感谢回复。我试试看

原理是什么呢?

我安卓小游戏接收 ws 消息就会卡丝,不知道是不是这个问题,来战略插个眼哈哈

这个没有编译到,请问怎么编译


2.4.6了还是这样,pr并没有合并,只能自己改了,改了之后手机不烫了,基本跟2.3.3一致

3赞

2.4.6竟然还存在,我就说怎么window打包后客户机子经常无响应提示,我现在有理由严重怀疑无响应这个问题跟官方这个websocket问题有严重的挂钩

看了下pr是2.3有人提的,合入引擎是2.4.0,只在2.4.0提了一句增加了原生native websocket的带宽,看了下改动之前的注释,lws_server函数第二个参数代表了在一定时间内处理收到的网络信息,没理解错的话就是每帧种划出一段时间起了个while处理网络信息,数值越高会使cpu占用越高,2.4.0以前是2ms,2.4.0 改成了4ms,4ms是什么概念呢,60fps的游戏,一帧是16.66ms, 一般不是很复杂的游戏70多drawcall frame time也就 4ms,这样cpu不是随随便便50%往上。 顺便提一句,感觉这个网络实现不是很好,按照2ms处理网络层的信息 + sleep(3ms) + 回调到cocos线程通知至少需要21ms,意味着在native上即使是本地服务器延迟也是21ms+

1赞

这个红色的代表删除,绿色的代表新增,那我刚下载的2.4.2的这个文件里面就是 这样的,是不是说明我不用改

阅读全文都在说4ms是导致cpu占用增加的罪魁祸首,你这个就是4ms,应该要改的。

好的,谢谢了

改引擎这个文件,只要照着改就好保存了,引擎重启就可以生效了对吧,应该不需要做其他的操作吧

并不是多少毫秒导致问题,二是要休眠几毫秒,让出cpu,不然一直在循环执行,是很占cpu的


我之前是这样定制引擎的:copy引擎到自定义目录,修改里面的内容,再调整cocos的引擎路径为自定义的目录。

然后代码改动的话,我理解的就是红的改回来,绿的移除。

1赞

哈哈,谢谢指点,那个4ms是休眠几毫米的意思吗

即把
lws_service(__wsContext, 4);
改回
lws_service(__wsContext, 2);
std::this_thread::sleep_for(std::chrono::milliseconds(3));
这样更改即可