※ 이 글은 오가사와라 히로유키(小笠原博之) 씨가 블로그에 적은 글을 번역한 것입니다. 사정에 따라 예고없이 삭제될 수 있으므로 양해부탁드립니다.
컴파일 시간의 비교 BayTrail
(원문 : コンパイル時間の比較 BayTrail)
BayTrail-D Celeron J1900 PC에서 컴파일 시간을 비교해보았습니다.
flatlib3 Linux clock core RAM OS arch compiler time sec ------------------------------------------------------------------------- Raspberry Pi ARM11 0.7GHz x1 0.5GB wheezy arm6 gcc-4.7 2276.8 (38m) Atom Z540 1.9GHz x1 2GB 14.04 x86 clang-3.5 446.9 (7m) Atom Z540 1.9GHz x1 2GB 14.04 x86 gcc-4.8 369.4 (6m) Tegra3 Cortex-A9 1.2GHz x4 1GB 13.04 arm7 gcc-4.8 247.4 (4m) BayTrail-D J1900 2.0GHz x4 8GB 14.04 x64 gcc-4.8 72.1 BayTrail-D J1900 2.0GHz x4 8GB 14.04 x64 clang-3.5 53.2 Core i7-2720QM Sandy 2.2GHz x4 16GB 14.04 x64 gcc-4.8 26.6 Core i7-2720QM Sandy 2.2GHz x4 16GB 14.04 x64 clang-3.5 20.2 ・time이 낮을수록 고속
Linux용 build는 ARM에서도 작동합니다. 4core BayTrail은 1분 남짓. Mobile용 i7에서 20초이니 속도차이는 2.6배 정도. Desktop PC라면 3배 이상 차이가 날 것이라 생각됩니다. i7과 ARM11과의 차이는 100배 이상.
아래는 Android NDK를 사용한 build 시간입니다. armeabi, armeab-v7a, mips, x86의 4종류에다가 OpenGL ES2/ES3의 2종류를 생성하므로 위에 적은 Linux build보다 몇배의 시간이 걸렸습니다.
flatlib3 AndroidNDK clock core RAM OS arch time sec ------------------------------------------------------------------------- Core 2 Duo P7350 2.0GHz x2 8GB MacOSX 10.9 x64 482.1 (8m2s) BayTrail-D J1900 2.0GHz x4 8GB Windows 7 x64 424.1 (7m4s) BayTrail-D J1900 2.0GHz x4 8GB Ubuntu 14.04 x64 277.2 (4m37s) Core i5-3210M Ivy 2.5GHz x2 8GB MacOSX 10.9 x64 219.0 (3m39s) Core i7-2720QM Sandy 2.2GHz x4 16GB Windows 8.1 x64 157.7 (2m37s) Core i7-3615QM Ivy 2.3GHz x4 16GB Windows 8.1 x64 146.5 (2m26s) Core i7-2720QM Sandy 2.2GHz x4 16GB MacOSX 10.9 x64 142.7 (2m22s) Core i7-3615QM Ivy 2.3GHz x4 16GB MacOSX 10.9 x64 114.1 (1m54s) Core i7-2720QM Sandy 2.2GHz x4 16GB Ubuntu 14.04 x64 102.9 (1m42s) ・time이 낮을수록 고속 ・Android NDK (r9d) gcc 4.8 ・armeabi, armeabi-v7a, mips, x86
↑이쪽은 ARM에서는 돌릴 수 없는 대신 OS에 의존하지 않고 비교할 수 있다는 이점이 있습니다. 다만 OS 환경에 의한 차이가 예상 이상으로 커서 프로세서의 성능을 보려면 동일 OS 끼리 비교하는 것이 좋을 듯 합니다. Cygwin을 경유하지 않고 gcc를 사용하였습니다만, 그래도 Windows에서의 컴파일은 느렸습니다.
아래는 OSX target에서의 비교.
flatlib3 Mac OSX clock core RAM OS arch compiler time sec ----------------------------------------------------------------------- Core 2 Duo P7350 2.0GHz x2 8GB 10.9 x64 clang-3.4 69.0 Core i5-3210M Ivy 2.5GHz x2 8GB 10.9 x64 clang-3.4 38.8 Core i7-2720QM Sandy 2.2GHz x4 16GB 10.9 x64 clang-3.4 26.1 Core i7-3615QM Ivy 2.3GHz x4 16GB 10.9 x64 clang-3.4 21.8 ・time이 낮을수록 고속 ・x86_64 만
i7-2720QM과 Core 2 Duo의 시간차이는 OSX 대상에서 2.64배, OSX에서의 Android build는 3.37배의 차이가 났습니다. Ubuntu에서의 Android build로 비교하면 i7-2720QM과 BayTrail은 2.2배. 따라서 Core 2 Duo보다도 BayTrail 4core가 빠르다고 할 수 있겠습니다.
아래는 Windows target의 비교입니다. Windows 용은 x86/x64 바이너리를 둘 다 생성하는 것도 있고, OS에 따라 코드의 양이 달라지기에 더 많은 시간이 걸립니다.
flatlib3 Windows clock core RAM OS arch compiler time sec ------------------------------------------------------------------------ BayTrail-D J1900 2.0GHz x4 8GB Win7 x64 VS2013TCP 402.1 Core i7-2720QM Sandy 2.2GHz x4 16GB Win8.1 x64 VS2013TCP 137.3 Core i7-3615QM Ivy 2.3GHz x4 16GB Win8.1 x64 VS2013TCP 113.4 ・time이 낮을수록 고속 ・x86, x64
↑이 데이터를 보면 2.9배의 차이가 났으며, 비율로 보면 Core 2 Duo와의 차이가 적어졌습니다.
마지막으로 데이터로서의 의미는 없지만 만일의 경우를 위한 iOS용 build입니다. 5종류 분의 Fat Binary를 생성하므로 시간이 걸립니다. OSX와 비교하면 거의 5배로 계산대로입니다.
flatlib3 iOS clock core RAM OS arch compiler time sec --------------------------------------------------------------------------- Core 2 Duo P7350 2.0GHz x2 8GB 10.9 x64 clang-3.4 350.6 (5m51s) Core i5-3210M Ivy 2.5GHz x2 8GB 10.9 x64 clang-3.4 189.1 (3m9s) Core i7-2720QM Sandy 2.2GHz x4 16GB 10.9 x64 clang-3.4 128.5 (2m8s) Core i7-3615QM Ivy 2.3GHz x4 16GB 10.9 x64 clang-3.4 107.6 (1m48s) ・time이 낮을수록 고속 ・armv7, armv7s, arm64, x86, x86_64
Desktop PC로 쓰기에는 아무래도 답답함이 느껴지지지만, CPU core수가 많아서 나름대로 퍼포먼스는 나온다는 인상입니다.
8inch 클래스의 경령 Tablet PC로 휴대하면서, 컴파일 시간이 노트북의 몇배 범위내라면 충분히 쓸만하다고 느꼈습니다. 다만 실제 Tablet에서는 동작 클럭도 탑재 RAM 용량도 크게 줄었으므로 그 점을 검증할 필요가 있을 것 같습니다.