2012-12-07 3 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 사용률이 그렇게 높은지 알 수있었습니다. 큰 레이어를 만들었으므로 불투명도를 YES로 설정하지 않았기 때문입니다. 어쨌든 ios 시뮬레이터가 장치와 비교하여 특정 작업을 처리하는 방법에 차이가 있는지 알고 싶습니다. – Saltymule

답변

3

차이가 있습니다. 그러나 대부분의 시스템에는 실제로 이점이 있습니다. 향상된 RAM 및 CPU 속도로 인해 실제로 작업이 더 원활 해 지므로 컴퓨터에서 더 잘 작동하는 경향이 있습니다. Macbook Air는 RAM이 2GB보다 높은 경우가 아니면 성능을 크게 향상시키지 않습니다.

이더넷에 연결되어있는 컴퓨터를 사용하는 경우 Wifi와 동일하므로 인터넷 속도가 정상보다 빠릅니다. 게임을 개발할 때, 특히 게임을 염두에 두는 것이 좋습니다.

Minthos으로

는 지적 편집, OpenGL은 잘 작동하지 않을 수 있습니다. 그러나 OpenGL을 사용하여 개발하지 않기 때문에 확인할 수는 없습니다. 그러나 이전의 요점은 다른 경우에도 유효합니다. 간단한 Cocos2D 애니메이션은 시뮬레이터에서 더 좋아야합니다.

1

내가 작성한 OpenGL 앱이 내 iPhone 4S에서보다 Macbook에서 느리게 실행되는 것으로 나타났습니다. 이것은 그래픽 하드웨어의 기능이 다르기 때문일 수 있습니다. iPhone에는 PowerVR GPU가 있지만 MacBook에는 두 개의 nVidia GPU가 있습니다. 아마도 시뮬레이터는 소프트웨어 렌더링을 사용합니까?

+3

시뮬레이터는 컴퓨터에 고유 한 코드를 실행하며, API는 컴퓨터에 기본으로 내장되어 있습니다. GPU 기능은 대부분 에뮬레이트됩니다. 일반적으로 비 GPU 코드는 시뮬레이터에서 훨씬 빠르게 실행되지만 GPU 관련 코드는 더 느리게 실행됩니다. 이것이 모의 실험에서 성능으로 얼마나 정확하게 변환되는지는 알기가 어렵습니다. 왜냐하면 모든 것이 100 % GPU가 아니기 때문에 네이티브 x86이 에뮬레이션의 일부를 보충 할 수 있기 때문입니다. 일반적으로 장치에 대한 성능 테스트를 항상 수행해야합니다. – ahwulf

관련 문제