아이폰과 안드로이드 폰으로 게임을 해보면 성능차이가 좀 나는데 왜 그럴까?

 

1. CPU/GPU 의 성능차이

 

과거에는 퀄컴 CPU가 다소 성능이 앞선 적도 있이만 현재는 애플 아이폰의 CPU가 압도적 우위를 보이고 있다.

 

벤치마크로는 게임에 중요한 싱글성능 에서는 거의 2배 차이로 애플 CPU가 앞서고 

 

GPU 벤치마크로도 아이폰이 훨씬 앞서고 있다.

 

 2. 프로그래밍 언어 차이

 

안드로이드는 커널과 하위라이브러리 를 제외한 UI 와 고급 라이브러리 와 

 

안드로이드 앱이나 게임 등은  의 Java/ C# 라는 언어로 쓰여 지는데 이게 C/C++ 와는 달리 

 

Dalvik/ .NET 이라는 가상머신위에서 돌아가므로 그만큼 오버헤드가 있다. 

 

또 하위의 C/C++ 커널/라이브러리와 Java의 데이터 형의 차이가 있어서 그 변환에도 오버헤드가 있다.

 

반면 애플 아이폰 게임과 OS는 대부분 C++/Objective-C 로 작성되므로 가상머신/라이브러리 오버헤드가 없다.

 

3. 메모리 효율 차이

 

애플 아이폰 앱들은 C++/C 로 작성되어 메모리 관리를 직접 하거나 레퍼런스 카운팅이라는 방법을 쓰는데 

 

이게 프로그래밍하기는 까다롭고 매우 번거롭지만 메모리 오버헤드가 적다.

 

반면 안드로이드 는 Java/C# 를 쓰고 메모리 관리를 자동화 해서 프로그래밍은 매우 쉽지만 

 

그만큼 메모리 오버헤드가 크고 또 정기적으로  mark-and-sweep 으로 안쓰이는

 

메모리를 회수(GC)를 하는 데  이 동안은 프로그램이 잠깐 멈춰있어야 하므로

 

CPU 성능이 충분하고 남아도는 데도 불구하고 사용자에게는 프로그램이 버벅거린다고 느껴진다.

 

그래서 RAM 2 GB에 불과한 아이폰이 4-6 GB 안드로이드 폰보다 더 부드럽게 게임이 돌아가는 이유이다.

 

연구에 의하면 완전 수동 관리와 완전 자동 관리가 같은 성능을 내려면 

 

GC 는 약 4-5배의 메모리가 필요하다고 한다.

 

4. 최적화의 차이 

 

아이폰 앱스토어의 매출액은 구글 플레이 매출액의 약 2배 정도이고 

 

실제 동일한 게임이나 앱의 매출도 2배 정도 이다.

 

그러니 개발자 입장에서 앱을 개발할 때 당연히 돈을 많이  버는 쪽에

 

더 많은 개발 자원을 투자할 수 밖에 없다.

 

그래서 안드로이드 앱보다 애플 아이폰 앱의 최적화에 더 공을 들이는 거다.

 

 

위의 이유들로 사용자가 체감하는 성능, 특히 게임중에 버벅거리지 않는 다느는 것 때문에 

 

게임에는 아이폰이 갑이라는 인식이 확고하게 된 거다.