找回密码
 点一下
楼主: losdab

共享一个【中心计时器】的JASS实现

[复制链接]
发表于 2010-12-14 21:52:04 | 显示全部楼层
你1个timer执行10000次某代码和开100和timer每个同时执行100次某代码结果是一样的,卡死。这个趋势到魔兽能承受的代码量上时也是成立的,甚至分timer分时段运行、利用executetrigger/func运行也一样,效率不会有任何可感受到的提升,有时前者还能在卡了很久后结束,后者你就打开任务管理器看魔兽的内存占用量无限往上升吧。

究其原因恐怕是魔兽本身就是一个单timer,所以ydwe的那个中心计时器系统相对于效率来说更趋向于面向ui了,而且还是用trigger开销这么大的载体。像它的其他功能也是,比如月神箭,你无法在地图上同时有50以上的箭。不过面向ui本来就是他们最主要的目的吧。

至于编程方便,我们来比较一下中心计时器和传统的timer+ht/gc的区别,可以说在变量存储的语句上中心计时器跟传统方法完全一样,对于某些带自动完成的脚本编辑器来说传统方法由于可以自动完成在速度和准确性上甚至更好。中心计时器好处在于不要create/destroy timer,相当于做了一个壳,到最后还是面向ui么……

至于弹幕么,我又得来说弹幕的效率不是在移动,而是在判定中消耗掉的了,单纯移动tds都能到地图上同时四五百,但是确实成熟的弹幕系统一般来说是用“中心计时器”这个概念的。

好吧,每次都这样,我说话比较直,lz不要介意……
回复

使用道具 举报

 楼主| 发表于 2010-12-16 08:58:52 | 显示全部楼层

回 24楼(louter) 的帖子

不同的系统需要不同的“Timer”吧,可能我比较懒,喜欢实现一个通用的东西,还有可能我比较喜欢地图小点吧,相同的代码我希望写的越少越好。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-3 07:22 , Processed in 0.111994 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表