붐업 베스트

즐겨찾기
최근 방문 게시판

Android가 iOS보다 느릴 수 밖에 없는 태생적인 이유.

들어가기에 앞서,

Galaxy10, LG G8 ThinQ등은 OS(Operating System)로 "Android"를 사용한다. iPhone11, iPhone7+등은 OS로 "iOS"를 사용한다.

이 글은 "Android가 iOS보다 느린 이유"이지 "삼성 Galaxy S10이 iPhone11보다 느린 이유"가 아니니까 제발 헛소리하면서 댓글에 콜로세움열지 않길 바란다. 그리고 배경 지식이 없는 사람들이 이해하기 쉽게 완전히 뭉개서 설명할거니까 자기가 잘 안다 싶으면 잘난척 하고싶더라도 좀 참고 질문 댓글에 답이나 달아줘라.

 

이 글은 삼성이나 LG폰을 쓰는사람을 까내리려는게 절대 아니다. 애초에 Android 폰이 iPhone에 비해 후졌다고 하면 시장 규모가 이렇게 형성될래야 형성될 수가 없다. 당연히 서로 장단점이 있다. 다만 몇몇 사람들이 "iPhone유저가 iPhone을 선택하는 이유는 디자인이나 감성적인 측면밖에 없다." 라고 오해를 하고있어서 좀 다양한 관점으로 세상을 볼 수 있게 도와주려고 이 글을 쓴다. iPhone은 Android 폰과 비교했을 때 수많은 단점이 있겠지만, 수 많은 장점도 있고 가장 중요한 두가지는 보안과 속도이다. (속도라는 표현이 참 애매한데, 정확히 말하면 같은 앱을 실행하는데 더 적은 CPU클럭을 소모한다고 말하는게 나을 수도 있겠다.) 여기선 속도에 관한 내용만 소개할 것이다.

 

간단 요약하면 Android가 iOS보다 느릴 수 밖에 없다. 이건 Android 개발자들이 iOS개발자보다 능력이 없어서 그런게 아니고, 일종의 Trade-off 개념이라고 보면 된다. iOS가 실행되는 환경은 고정되어있다. Apple이 직접 만든 iPhone, iPad, iPod이 iOS가 실행되는 고정된 환경이고, 새로운 환경이 추가되더라도 Apple이 iOS도 개발하고 하드웨어도 개발하기 때문에 충분히 그에 맞게 대응할 수 있다. 그러나 Android는 실행되는 환경이 고정되어있지 않다. Android를 개발하는 곳(안드로이드는 구글이 주도하긴 하나 오픈소스 프로젝트이기 떄문에 전세계의 개발자들이 개발에 참여한다.)과 제조사는 완전히 분리되어있고 언제 어떤 새로운 실행환경이 추가될지 알 수가 없다. 불특정 다수의 환경을 지원해야 한다는 제약이 있기 때문에 이걸 구현하려고 성능을 trade-off 시킨 것이다.

 

여기서 부터 진짜 이해하기 어려울 수 있는데 최대한 쉽게 설명하기 위해 노력해보겠다.

 

어떤 개발자가 프로그래밍 언어를 써서 어플리케이션(쿠키런, 리니지, 카카오톡 같은...)을 개발했다고 하자. 이 어플리케이션이 우리 폰에 달려있는 CPU를 통해 실행되려면 "컴파일"이라는 과정을 거쳐야한다. 프로그래밍 언어는 개발자가 이해할 수 있는 언어이기 때문에, CPU가 이해할 수 있는 형식으로 바꿔줘야 하기 때문이다. CPU가 이해할 수 있는 형식은 CPU마다 다르다. CPU A는 A형식을 이해하고, CPU B는 B형식을 이해하고, CPU C는 C형식을 이해한다고 쉽게 표현할 수 있다.

 

iOS의 경우 사용할 CPU가 뭔지 이미 알고있다 환경이 고정되어 있기 떄문이다(iPhone 11에 들어가는거, iPhone 7+에 들어가는거, iPhone5에 들어가는거, iPad에 들어가는거 등등...). Apple에서 쓰는 CPU를 A, B, C, D 4가지라고 하면 프로그래머는 본인이 개발한 어플리케이션을 A, B, C, D 4가지 형식으로 컴파일 해서 앱스토어에 올리면 된다. 끝!

 

Android는 사용할 CPU가 뭔지 알 수가 없다. 전 세계에 존재하는 모든 CPU 타입에 맞게 컴파일을 해서 올릴 수도없고, 설사 그런다 하더라도 CPU타입이 계속해서 추가되기 때문에 계속해서 새로 컴파일을 해야한다. 그래서 Android는 어플리케이션을 그냥 실행시키지 않고 DVM(Dalvik virtual machine)이라는 가상 환경 위에서 실행시킨다. 

 

DVM은 대충 "X 형식을 이해하는 CPU X"라고 생각하고 넘어가자. 부를 때도 CPU X라고 부르겠다. 모든 어플리케이션이 CPU X 위에서 돌아가기 때문에 개발자는 X 형식 단 하나로 컴파일을 해서 플레이스토어에 올리면 끝이다. 그리고 E, F, G, H 타입의 CPU를 만드는 제조사들은 자기들 CPU위에서 가상의 CPU인 "CPU X"가 실행될 수 있도록 인터페이스를 구현한다. 내 컴퓨터에 있는 CPU로 실행시킨 마인크래프트 안에서 레드스톤으로 CPU를 만들어서 돌리는거랑 비슷한 개념이다. 마인크래프트 안에 만든 CPU가 진짜 CPU보다 빠를까? 당연히 느리다. CPU X도 진짜 CPU보다 당연히 더 느리다.
 

한 문장으로 요약하면 "Android 어플리케이션은 VM위에서 돌아가기 때문에 Native 환경에서 실행되는 iOS 어플리케이션보다 태생적으로 느리다."가 된다. 이게 Android가 느린 첫 번째 이유다.(몇년전에 Android에서 ART라고 하는 신 기술을 개발해서 해당 단점을 극복하였으나, 우리가 주로 플레이하는 게임들은 NDK라는 툴을 통해 C/C++언어를 컴파일해서 배포하므로 소용이 없다.) 첫 번째 이유가 가장 치명적이기 때문에 두 번째 이유부턴 간단하게 설명하고 넘어가겠다.

 

두 번째 이유는 "최적화". iOS는 사용할 CPU 목록을 이미 알고있기 때문에 해당 CPU에만 존재하는 신 기능, 좋은 기능들을 활용할 수 있다. 또 계속해서 테스트 사이클을 돌리면서 가장 적절한 전력값, 가장 적절한 코드, 가장 적절한 설정값을 넣을 수 있다. Android는 신기능을 쓰고싶어도 어떤 CPU엔 신기능이 있고, 어떤 CPU엔 신기능이 없으면 아예 못쓴다고 보긴 어렵지만 유지보수하기가 까다로워서 공수가 훨씬 많이든다. 비슷하게 메모리 사용량도 iOS가 최적화가 더 잘되어서 더 적은 메모리를 쓰게된다.

 

세 번쨰 이유는 Garbage Collection(쓰레기 줍기?..), 줄여서 GC이다. Android 앱을 개발 할 때 쓰이는 언어인 Java나 Kotlin은 주기적으로 사용되지 않는 메모리를 뒤져서 청소해줘야한다. 안그러면 메모리가 모자라기 때문이다. iOS에서 쓰이는 ObjC나 Swift는 ARC라고해서 메모리가 사용되면 카운트를 하나 늘리고, 사용을 안하면 카운트를 하나 줄여서, 카운트가 0이되는 순간 그냥 청소해버리기 때문에 주기적으로 GC를 해줄 필요가 없다. 근데 이 GC라는 작업이 굉장히 무겁고 CPU를 많이 소모하기 떄문에 이게 있고 없고가 성능차이가 크다. 마찬가지로 Java 개발자들이 ObjC 개발자들보다 지능이 낮아서 이렇게 개발한게 절대 아니고, Trade-off를 한거다. 언어 개발자들은 다 천재다. 자세한 설명은 스킵.

 

대충 이런 세가지 이유로 같은 기능을 실행시켰을 때 Android가 iOS보다 더 많은 CPU클럭을 소모하고, CPU를 더 쓰니 배터리도 더 빨리 닳고, CPU를 더 쓰니 발열도 더 심할 수 밖에 없다. 그래서 Android 폰들은 iOS보다 상대적으로 더 높은 하드웨어 스펙을 넣어서 격차를 따라잡으려고 한다. 이러면 마진율에 차이가 생기니까 애플이 R&D에 투자하기 쉽고, 회사가 성장하기 더 쉬운 것이다. 하여튼 소비자 입장에선 결국 성능이 결과적으론 또이또이 하기 때문에 알아서 고르면 된다는 것이다. 마무리 단계에 가니 갑자기 횡설수설

 

그냥 기술적으로 새로운걸 알았으니 와~~ 신기하다~~ 요정도로만 하고 제발 싸우지마라~~~ 

 

네줄요약

1. Android는 불특정 다수의 기기를 지원해야함.  iOS는 정해진 기기만 지원하면 된다.

2. Android는 어플리케이션을 DVM 위에서 돌려야하기 때문에 더 느리다. (한국인이 미국인한테 전달할 말이 있을 때, iOS는 한국인이 바로 영어를 써서 미국인한테 말하고 Android는 한국인이 중국말로 중국인한테 말하고, 중국인이 미국인한테 영어로 말한다! 라고 비유할 수 있음)

3. iOS는 CPU의 신기능을 더 쉽게 사용하고, 최적화 테스트를 더 빡세게 진행할 수 있다.

4. Android 어플리케이션은 GC를 해야해서 CPU를 더 써야한다.

 

91개의 댓글

2019.09.15
@익게용

정확함

0
2019.09.15

잘읽고 가용 감사!

0
2019.09.15

읽판에 어울리는 글이네염

0

굿굿

0
2019.09.15

다 아는 이야기를 최근에 공부하고 그냥 쓸모없는 단어만 잔뜩 추가해서 적힌 글이네.

그리고 한 가지는 맞지만 조금은 틀렸다. 안드로이드는 오픈소스이기 때문에 제조사와 완전 분리되어 있는 것은 아니다.

갤럭시 폴드가 나올때 구글에서 안드로이드를 그에 맞게 수정하였듯이 여러 상황에 따라 적절히 대응하고 있다. 그것이 특화가 아닐 뿐.

완전 분리 독립이라는 말 자체는 틀렸다고 볼 수 있는 것.. 그래서 그런식으로 절대 표현하는 사람은 없다. 보편성에 맞출뿐이지

 

근데 APU는 지들이 설계하고 제조시켜서 SoC&PoP하는거 아니냐

0
2019.09.15
@브금돌이

다알긴 뭘 다알어 니네엄마한테 물어봐라 아는가 모르는가

 

1
2019.09.15
@임시계정

아미안 ㅠㅠㅠㅠㅠ 느그엄마 보여주려고 적은 글인지 몰랏어... 사과할게;;

1
2019.09.15

cpu기능을 못쓴다니 몬소리야

 

삼성같은 주류 스마트폰 회사는 자사모델을 출시할때 cpu에 맞게 다 커스터마이징된다. 무슨소릴;;

 

심지어 독자적인 보안모듈도 붙여서 출시하는 판인데 너무 일차원적인 생각임

0
2019.09.15
@멘탈터짐

안드로이드 개념을 어떤 단체가 만들어서 배포하고 그걸 그냥 쓴다는 생각인거같은데 큰 착각이다.

 

소스를 그냥 가져다 쓰는게 아니야

0
2019.09.15
@멘탈터짐

뜬금없는 횡설수설

0
2019.09.15
@멘탈터짐

내가말한건 새로 지원되는 Assembly instruction 같은걸 말한건데, 삼성이 저걸 추가하도록 재설계한다고?

0
2019.09.15
@임시계정

당연하지 TEE쪽은 그냥 쓸수있을꺼같냐

0
2019.09.15
@멘탈터짐

쟤 말은 cpu성능이 100으로 출시됐어도 100의 퍼포먼스를 다 못보여준다는말이겠지

0
2019.09.15
@도플갱어2

ㄴㄴ

 

쟤는 cpu가 업글되면서 추가된 신기능을 아예 배제한다고 이야기하는데

 

전혀 아님

1
2019.09.15
@멘탈터짐

"어떤 CPU엔 신기능이 없으면 아예 못쓴다고 보긴 어렵지만 유지보수하기가 까다로워서 공수가 훨씬 많이든다.

개드립 - Android가 iOS보다 느릴 수 밖에 없는 태생적인 이유. ( https://www.dogdrip.net/225605148 )" 뭐라카노

 

0
2019.09.15
@임시계정

ios랑 비교해서 뭐가 유지보수하기가 까다로워 공수가 훨씬 많이드는건데?

 

삼성도 즈그들이 출시한폰만 신경쓰면 되는건데

 

신기능에 쓰냐 마느냐는 ios나 안드로이드나 마찬가지야

0
2019.09.15
@멘탈터짐

대충 수긍은 가는데, 여지가 있다면 애플은 칩도 지들이 만들기 때문에 지들이 제일 잘 알지만 삼성은 Galaxy S10 하나만 있는것도 아니고 A라인, 노트라인 각각에 들어가는 CPU 다 다를 수도있고, CPU 제조사랑 협업도 들어가야하니 굳이 따지자면 공수는 더크지

 

0
2019.09.15
@임시계정

만약 본인이 삼성 직원이라고하면, 직원보다 잘 아는 사람은 없으니 아닥하겠음

 

0
2019.09.15
@임시계정

그렇게치면 아이폰은 안그럼? +모델도 있고, 패드도 있는데?

0
2019.09.15
@멘탈터짐

걔들은 다 A10, A11, A12임 자기들이 만든거.

0
2019.09.15
@임시계정

저기요, 애플이라고 모든기기 AP다 적용되서 나오는걸로 착각하신것 같은데 아닙니다...

그거 떄문에 성능 이슈 늘 나왔구요

멘탈터짐이 하는 말들도 맞는거에요

1
2019.09.15
@브금돌이

말도라고 하는건 작성자가 하는 말도 맞아 글을 더럽게 못써서 그럴 수도 있는데 생각하는건 같을 지도 모르지

안드에 비해서 애플이 대응이 훨씬더 빠를 수 있기 때문에 ㅇㅇ (근데 이 성능이슈는 애플이 쌩까다 4년뒤 슬쩍 해결하곤 질의응답 거부 해결했다, 수정했다 라는 내용 거부, 처음부터 인정X)

0
2019.09.15
@멘탈터짐

이 내용도 맞음.

[멘탈터짐]이 한 말대로 주류회사들은 자사 모델 출시할때 해당 APU에 맞게 제품들에 맞게 최적화 작업을 함. 그래서 다른 모델군이 나올때도 동일한 APU를 사용하거나 유사 APU를 그대로 사용하는 경우가 잦은거고 반대로 그에 맞게 OS도 기본적으로 수정됨.

CPU에 맞게 퍼포먼스가 나올 수 있도록 지속적으로 하고, APU를 생산하는 곳에서 신기술이 적용될때 안드로이드도 함께 수정됨

애시당초 신기술 짜란!! 하면서 하지만 OS에서는 지원하지 않아서 못써요! 라고 하지않아

 

마소에서도 인텔이나 AMD CPU 신기술이 있을때 늘 대응해왔고 제조회사에서 전문부서를 별도로 두고 대응하고 있음

0
2019.09.15

대충 호환성과 속도는 반비례한다고만 알고있으면 반은 먹고들어가지 뭐

0
2019.09.15

게임만 하는 폰 사려는데 안드가 나음?아이폰이 나음?

0
2019.09.15
@야생화

닥 아이폰 ㄱㄱ

안드는 못비빔

0
2019.09.15
@Hitomi.la

아이폰 근데 추운곳에서 하면 배터리 조루 된다는데 ㄱㅊ?

0
2019.09.15
@야생화

보조배터리 끼든가 해야지 뭐

0
2019.09.15
@야생화

멀티미디어는 안드로이드. 게임은 아이폰.

0
2019.09.15
@임시계정

ㅇㅋ

0
2019.09.15
@야생화

가격 상관없으면 아이폰 제일 비싼거 사면돼

0
2019.09.15

??? : (눈과 귀를 막으며) 응 앱등이 응 혁신은 오직 삼성 응 혁신삼성 혁삼~ 삼성이 우주에서 최초야~

0
2019.09.15
@상식버림

??? : (눈과 귀를 막으며) 응 시총1조~

0
2019.09.15

아는 애들은 그냥 넘어가달라고 써있는데도 다 아는거라느니 젠체하는 애들은 꼭 있네ㅋㅋ

4
2019.09.15

그러니까 아이폰을 쓰는건 i7-8700 쓰던 사람이 바람의 나라 하려고 i9-9900K를 사는 격이라는 거지?

결론은 AMD를 사라 이거네.

0
2019.09.15

달빅 언제적 얘기냐

뭉개서 설명하는거에 옛날 얘기를 현재에도 적용되는 양 쓰는 것도 포함되냐?

1
2019.09.15

ndk가 소용이 없다는게 무슨소리임? c코드 작성해서 아키텍쳐에 맞게 컴파일하고 jni로 인터페이스만 제공하는거니 애당초 art가 필요없잖아

2
2019.09.15
@김붕쯔붕쯔

ART VM넘어오면서 컴파일 할때 코드 전체 변환 저장되고 실행할때마다 변환된 코드를 읽는 게 맞지

컴파일러는 AOT구

0
2019.09.15
@브금돌이

ndk얘기하는데 웬 뜬금포 aot얘기임

글쓴애가 "몇년전에 Android에서 ART라고 하는 신 기술을 개발해서 해당 단점을 극복하였으나, 우리가 주로 플레이하는 게임들은 NDK라는 툴을 통해 C/C++언어를 컴파일해서 배포하므로 소용이 없다." 래잖아

1
2019.09.15
@김붕쯔붕쯔

방금 니 댓글보고 길게 적었따가 다시 삭제했따.

일단 난 니말에 반박하는게 아니라 다른 말을 한거임.

 

또, "뭔 헛소리야 NDK가 뭔 소용이 없어" 하고 댓달아놨는데 너나 나나 같은 소리였네

난 너말에 동의하는거야 그리고 NDK 때문이라는게 이해가 안된다

0

판깔아놓고 싸우지말라면 우짜노 ㅋㅋ

1
무분별한 사용은 차단될 수 있습니다.
제목 글쓴이 날짜
문철빵이 문제인가? 15 overflowᅠ 7 시간 전
인기걸그룹 팬 싸인회 대참사 18 까불지마 9 시간 전
[속보] 임영웅 입원 중이던 병원에서 숨 거둬 11 전통원조병맛 13 시간 전
혐) 나만 볼 수 없지 11 루체하브 16 시간 전
정몽규 욕하는 축구팬들한테 진짜로 궁금한 점 12 살시챠 1 일 전
후방주의) 프리렌 세계관의 마족 5 OヮO 1 일 전
ㅇㅂ) 은근히 이쁜 어둠의 우정잉 .gif 29 구름이구름 2 일 전
🌶🌶스테이크 먹다 클레임 거는 만화 12 일토준지 2 일 전
올해 kbo에 도입된 기계심판 근황 15 콩순이아빠 2 일 전
ㅇㄱㅈ)오프모임에서 여자 만나는.manhwa 6 일토준지 2 일 전
경제이제 급속도로 안좋아질것같다 14 바둑이22 3 일 전
🌶) 음식에서 이물질이 나오는 미친가게 17 일토준지 4 일 전
19) 갑자기 궁금한거 있는데 29 삽입 4 일 전
내 조건은 몇의 남자일까? 16 살데빌구 4 일 전
싱글벙글 GTA5에서의 삼성 취급.jpg 26 덕천가강 4 일 전
ㅎㅂ) 야짤 열한시십륙분 5 일 전
내가 느낀 여성 인권 11 함지박 5 일 전
알리 테뮤 개붕이 한국인 인증함 31 llllllllIl 5 일 전
흑자가 민희진얘기 잘 설명하네 9 아자차카파타하 5 일 전
지뢰녀 생성 테크트리.jpg 18 부분과다른전체 5 일 전