快速CPU占用

时间:2014-10-12 19:16:26

标签: arrays swift sprite-kit cpu-usage

我正在测试背景对象的执行情况,这个数组只有几十个SKSpriteNodes从屏幕底部向上移动,并在超越屏幕顶部后被删除。它们也在正弦波上水平移动。我将backNodeArray中的节点及其当前水平速度存储在backHorSpeedArray: [Float]

在屏幕上显示第一个节点时,iPhone 4S上的CPU利用率达到100%,并且当任何给定时刻该数量在大约25个节点处或多或少稳定时,FPS已经低于35。

我已经使用Time Profiler检查了生猪,发现单行代码占执行时间的55%以上。

override func update(currentTime: CFTimeInterval) {
    else if (state == 1) {
        if (self.backNodeArray.count > 0) {
            for i in 0...self.backNodeArray.count-1 {
                self.backHorSpeedArray[i]++;
            }
        }
    }
}

基本上,每次调用更新函数时,self.backHorSpeedArray中的每个项都会递增,这需要超过执行时间的一半!?

当该行被注释掉时,CPU永远不会达到100%且FPS为60而没有振荡。

这里发生了什么?我可以有一个变量记忆自游戏开始以来的步数,然后添加“只读”#39;数组中的值是否需要它可以解决性能问题,但为什么这会占用CPU密集型呢?

0 个答案:

没有答案