2012-12-07 73 views
2

我一直在玩一些動畫,而且恰好我沒有附近的設備進行測試。我有一個簡單的動畫雲在天空中移動。雲是動畫用這種方法:iOS模擬器運行動畫的效率降低了嗎?

-(void)animateLayer:(CALayer*)layer toPosition:(CGPoint)position withDuration:(CGFloat)duration{ 
    // Prepare the animation from the current position to the new position 
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"]; 

    animation.fromValue = [layer valueForKey:@"position"]; 
    animation.toValue = [NSValue valueWithCGPoint:position]; 
    animation.delegate = self; 

    animation.duration = duration; 

    [animation setValue:layer forKey:@"cloudLayer"]; 

    // Update the layer's position so that the layer doesn't snap back when the animation completes. 
    layer.position = position; 

    // Add the animation, overriding the implicit animation. 
    [layer addAnimation:animation forKey:@"position"]; 
} 

該層包含一個簡單的部分透明的圖像。但是,當我運行這個時,CPU利用率比我預期在我的MacBook Air上高出很多。我有沒有效率低下?還是模擬器只是咀嚼了很多資源,如動畫等特定任務?

+0

呃,我只是想出了爲什麼我的CPU利用率如此之高。這是因爲我正在創建一個大圖層,但沒有將「不透明」設置爲「是」。無論我想知道ios模擬器與設備相比處理某些任務的方式是否有所不同。 – Saltymule

回答

3

有差別。但是在大多數系統中,實際上有一個好處。事情往往在計算機上運行得更好,因爲改進的RAM和CPU速度實際上使事情變得更好。除非您的RAM高於2 GB,否則Macbook Air可能不會提高性能。

同樣適用於Wifi,如果您的計算機已插入以太網,則互聯網運行速度會比平時更快。在開發過程中記住這一點很好,尤其是在遊戲時。

編輯

由於Minthos指出,OpenGL的可能無法正常工作。但是,我無法驗證,因爲我不用OpenGL開發。不過,我以前的觀點在其他情況下仍然有效。簡單的Cocos2D動畫應該更喜歡模擬器。

1

我注意到我寫的OpenGL應用程序在我的macbook上運行得比在我的iphone 4S上慢得多。這可能是由於圖形硬件的不同功能 - iPhone具有PowerVR GPU,但我的Macbook有兩個nVidia GPU。也許模擬器使用軟件渲染?

+3

模擬器在計算機上運行本機代碼,該API也構建爲本機到計算機; GPU功能大部分都是模擬的。通常,非GPU代碼在模擬器上運行速度會更快,但與GPU相關的代碼運行速度可能會更慢。究竟是如何轉化爲模擬器上的性能很難知道,因爲並非所有繪製的都是100%的GPU,所以本機x86可以彌補一些仿真。一般來說,你總是需要在設備上進行性能測試, – ahwulf