赞 | 342 |
VIP | 10 |
好人卡 | 8 |
积分 | 262 |
经验 | 235776 |
最后登录 | 2024-9-23 |
在线时间 | 2387 小时 |
Lv5.捕梦者 (版主) 遠航の猫咪
- 梦石
- 3
- 星屑
- 23186
- 在线时间
- 2387 小时
- 注册时间
- 2005-10-15
- 帖子
- 1166
|
本帖最后由 SailCat 于 2021-2-28 11:33 编辑
观察了一下所谓的并行事件多了会卡的问题,发现卡是事实,但帧率下降的并不明显
XP没有(也没法有)纤程,有多个并行事件时,就会每一个建立一个interpreter,并且在每一次update时刷新。
问题在于,在刷新过程中,有一个凡是单次执行了100条连续指令(且不触发画面更新)就会强制触发Graphics.update的机能,这个是为了防止报错退出。
但是这个update没有任何画面变化动作,纯粹只是前进一帧时间而已。
如果同一时间只有一个interpreter(比如没有并行事件的情况下),这么做当然没有任何问题
但是如果每个并行事件(包括公共事件)都要这么来一遍,那就要了命了,假设有5个并行事件,那从数学期望上说,就是每执行连续16条指令就会前进一帧时间。
从某种意义上说这样的卡和执行脚本返回false的卡死是一个机制造成的
几十个NPC在同一个画面上随机移动的画面刷新量运算,那可比几个并行事件高太多了,XP处理这些也不卡啊 |
|