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+
阅读全文都在说4ms是导致cpu占用增加的罪魁祸首,你这个就是4ms,应该要改的。
好的,谢谢了
改引擎这个文件,只要照着改就好保存了,引擎重启就可以生效了对吧,应该不需要做其他的操作吧
并不是多少毫秒导致问题,二是要休眠几毫秒,让出cpu,不然一直在循环执行,是很占cpu的
哈哈,谢谢指点,那个4ms是休眠几毫米的意思吗
即把
lws_service(__wsContext, 4);
改回
lws_service(__wsContext, 2);
std::this_thread::sleep_for(std::chrono::milliseconds(3));
这样更改即可
直接改引擎文件,不改变引擎路径可以吗
可以哈,最好加一个变更tag
这个是有的
大佬看下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天后自动关闭。不再允许新的回复。