Creator 导成iOS 原生的,挺不流畅的。求解决!!!

第一:我还真不知道sleep(1微秒)如何写
第二:只要sleep(>0),这里的实际sleep时间往往在15毫秒以上
第三:多线程是用几分钟就能学会,但要精通,需要很多年的亲身体会,特别作为客户端程序员往往轻视这个问题,导致各种机率很低的偶现宕机.

我再贴个分析:
"Sleep 接口均带有表示睡眠时间长度的参数 timeout。调用以上提到的 Sleep 接口,会有条件地将调用线程从当前处理器上移除,并且有可能将它从线程调度器的可运行队列中移除。这个条件取决于调用 Sleep 时timeout 参数。

当 timeout = 0, 即 Sleep(0),如果线程调度器的可运行队列中有大于或等于当前线程优先级的就绪线程存在,操作系统会将当前线程从处理器上移除,调度其他优先级高的就绪线程运行;如果可运行队列中的没有就绪线程或所有就绪线程的优先级均低于当前线程优先级,那么当前线程会继续执行,就像没有调用 Sleep(0)一样。

当 timeout > 0 时,如:Sleep(1),会引发线程上下文切换:调用线程会从线程调度器的可运行队列中被移除一段时间,这个时间段约等于 timeout 所指定的时间长度。为什么说约等于呢?是因为睡眠时间单位为毫秒,这与系统的时间精度有关。通常情况下,系统的时间精度为 10 ms,那么指定任意少于 10 ms但大于 0 ms 的睡眠时间,均会向上求值为 10 ms。"

sleep(1) 是可以,但当时的问题是在移动设备上发烫、耗电快。改成 20ms 后实际的 sleep 时间很可能变成 20 - 30ms,这对降低发热是有效的。定位出发热问题在哪后,解决问题就有思路了。

1赞

sleep(0.001)…

我怎么感觉以前做Window Mobile 程序也写过这事,是挺正常的,主要的目的是切换CPU时间片。也许上面的循环里条件太复杂了。
不过最近用的creator -js版本,确实让我有点无从下手的感觉。 用了几年了lua,写法开发上都差不多,只是对lua项目翻译成js,支持h5。。哎 又要蛋疼起来。

如果别人都不卡的话,我也只能认怂 撸去了。长夜漫漫,代码很难。:joy:

js有时间打印函数,你确定下哪块的代码执行时间长,是多少毫秒! 尽量精确到某行代码,或者通过引擎的哪个接口导致耗时长。
有数据说话,比猜测好多了!

http://forum.cocos.com/t/web/48512 这个案例,铁证如山

真的感谢@panda和@jare,貌似论坛里面有问题就@他们两个了,王哲大大记得给他们多一些股票:wink:
对于这些问题,具体问题具体分析:
问一些功能怎么现实的,或是基础用法,或是无脑喷,大多可以忽略掉了。
如果是一些有价值的反馈,像崩溃,性能的问题,还是值得关注一下的。特别是我们做的游戏,真正会面对很多实际的问题,有时候真的是引擎没法满足,而我也认为我们这种实际MMO提出来的需求,一定是非常实用的,也是使引擎更上一个台阶的。

2赞

你最后是怎么搞定的。

wangzhe你好,请问下你说的Intel工具是哪一个,没有搜道,谢谢!

我猜是vtune

来 给个联系方式,大保键必须有。

用的什么工具,以前没有接触过,发个名字出来,以后要用的话可以去查,谢谢

一样,很感谢@jare,一直很活跃给大家回复问题。

这个问题在Creator 1.6就已经修复掉了

你怎么知道我要多给他们股票。

没有,我这两天拿到1.6做了很多测试,只能说1.6比以前要好一点,以前效率比是 1:20(原生:web),现在大概是1:14,不得不说,原生效率提升了30%左右。当然,这只是个案不代表所有游戏

哈哈哈, 遇到这样的事真是想哭又想笑, 还真有人这么做, 自己还发现不了

@kkn1x 你的案例跟你解释过了,JS 到 C++ 调用过于多了,引发了严重的性能瓶颈,不能代表其他游戏,所以脱离游戏实现来谈性能都是耍流氓。你遇到的问题,短期内可能都不会在引擎层面有明显的优化,抱歉了

不用抱歉,谢谢大佬一番回复。我们拿一些案例来,也相当于免费给你们做了测试,并不是说要挑刺,我们本来就是免费用户,没有资格要求你们做任何改动,东西质量主要靠你们自己把控,这点还是清楚滴哈。。

1赞