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


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

2赞

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));
这样更改即可

直接改引擎文件,不改变引擎路径可以吗

我直接改这个文件

可以哈,最好加一个变更tag

这个是有的

备注下,2.4.7 修复了 https://github.com/cocos-creator/engine-native/pull/3990

1赞

大佬看下3.3.2的websocket 在安卓下cpu翻倍。
论坛翻遍了。方法都试过,也没效果

为什么不改成
lws_service(__wsContext, 1);
std::this_thread::sleep_for(std::chrono::milliseconds(4));
延迟将是(1ms + 4ms + 16.66ms + Internet delay) > 21ms

这样效率不是更高了?

我这边响应官方的提倡,已经升级到最新版,2.4.7以上应该是修复了,但是升级3.x是主流,响应号召

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。