These are the results from running Xcode on a non-trivial open source project using various Macs. The goal is to give developers a relative idea of how each computer model compares to one another. Read the specifics and contributing sections for more info.
π₯ | Computer Model | CPU | RAM | Fresh Build Time | Incremental Build Time | Xcode Version | Date & Commit Hash | New Build System? |
---|---|---|---|---|---|---|---|---|
π» | MacBook Pro 13", Retina, Mid 2014, 256GB SSD |
2.6 GHz i5-4278U | 8Gb | 1:43 | 0:27 | 11.2 | 2019-11-06 (commit) | βοΈ |
π₯ | Computer Model | CPU | RAM | Fresh Build Time | Incremental Build Time | Xcode Version | Date & Commit Hash | New Build System? |
---|---|---|---|---|---|---|---|---|
π» | MacBook Pro Retina, 15", Mid 2019 |
2.3 GHz i9-9880H | 16 GB | 0:32 | 0:05 | 10.3 | 2019-09-03 (commit) | βοΈ |
π₯ | iMac 5K 27", Early 2019, 256GB SSD |
3.0 GHz i5-8500 | 40 GB | 0:38 | 0:08 | 10.3 | 2019-08-07 | βοΈ |
π₯ | iMac 5K 27", Early 2019, 512GB SSD |
3.6 GHz i9-9900K | 16 GB | 0:29 | 0:05 | 10.2.1 | 2019-06-06 (commit) | βοΈ |
π» | MacBook Pro Touch Bar, 15", Mid 2018 |
2.9 GHz i9-8950HK | 32 GB | 0:43 | 0:06 | 10.2 | 2019-05-27 (commit) | βοΈ |
β¨οΈ | Custom PC | i9-9900K 3.6 GHz (Stock) | 32 GB | 0:17 | 0:05 | 10.1 | 2019-05-23 | βοΈ |
π₯ | iMac 5K 27", Late 2014, 1 TB SSD |
4.0 GHz i7-4790K | 32 GB | 0:40 | 0:13 | 10.1 | 2019-03-08 (commit) | βοΈ |
π» | MacBook Pro Retina, 15", Mid 2015 |
2.5 GHz i7-4870HQ | 16 GB | 0:46 | 0:10 | 10.1 | 2019-03-03 (commit) | βοΈ |
π» | MacBook Pro Retina, 15", Mid 2018 |
2,6 GHz i7-8850H | 16 GB | 0:28 | 0:09 | 10.1 | 2019-01-12 (commit) | βοΈ |
π» | MacBook Pro Retina, 13", Early 2015 |
2.7 GHz i5-5257U | 8 GB | 1:26 | 0:12 | 10.1 | 2019-02-15 (commit) | βοΈ |
β¨οΈ | Custom PC | 4.0 GHz i7-8086K | 32 GB | 0:31 | 0:11 | 10.1 | 2019-01-10 (commit) | βοΈ |
Mac Pro Flash Storage, Late 2013 |
2.7 GHz 12-Core Xeon E5 | 64 GB | 0:40 | 0:08 | 10.1 | 2018-12-15 (commit) | βοΈ | |
Mac Mini, Late 2012 |
2.3 GHz i7-3615QM | 8 GB | 1:05 | 0:14 | 10.1 | 2018-11-15 (commit) | βοΈ | |
π» | MacBook Pro Retina, 15", Mid 2014 |
2.8 GHz i7-4980HQ | 16 GB | 0:49 | 0:09 | 10.1 | 2018-11-16 (commit) | βοΈ |
π» | MacBook Pro Non-Retina, 13", Mid 2012, 180 GB SSD |
2.5 GHz i5-3210M | 16 GB | 2:35 | 0:17 | 10.1 | 2018-11-16 (commit) | βοΈ |
Mac Mini, Late 2018, 256GB SSD |
3.2 GHz i7-8700B | 32 GB | 0:25 | 0:02 | 10.2.1 | 2019-07-02 (commit) | βοΈ | |
Mac Mini, Late 2018, 512GB SSD |
3.2 GHz i7-8700B | 16 GB | 0:32 | 0:07 | 10.1 | 2018-11-15 (commit) | βοΈ | |
Mac Mini, Late 2018, 256GB SSD |
3.0 GHz i5-8500B | 8 GB | 0:42 | 0:08 | 10.1 | 2018-11-15 (commit) | βοΈ | |
π» | MacBook Pro Retina, 15", Mid 2018 |
2.2 GHz i7-8750H | 16 GB | 0:35 | 0:08 | 10.1 | 2018-11-16 (commit) | βοΈ |
β¨οΈ | Custom PC | i9-9900K 4.8 GHz | 32 GB | 0:25 | 0:07 | 10.1 | 2018-11-04 | βοΈ |
π» | MacBook Pro Retina, 15", Mid 2012 |
2.6 GHz i7-3720QM | 16 GB | 0:40 | 0:042 | 10.0 | 2018-09-13 (commit) | βοΈ |
π» | MacBook Pro Retina, 15", Mid 2015 |
2.8 GHz i7-4980HQ | 16 GB | 0:36 | 0:038 | 10.0 | 2018-09-24 (commit) | βοΈ |
π» | MacBook Air 13", Mid 2017 |
1.8 GHz i5-5350U | 8 GB | 1:47 | 0:15 | 10.0 | 2018-10-01 (commit) | βοΈ |
π₯ | Computer Model | CPU | RAM | Fresh Build Time | Incremental Build Time | Xcode Version | Date & Commit Hash | New Build System? |
---|---|---|---|---|---|---|---|---|
π» | MacBook Pro Retina, 15", Mid 2018 |
2.2 GHz i7 | 32 GB | 0:42 | 0:09 | 2018-05-19 (commit) | βοΈ | |
π» | MacBook Pro Retina, 15", 2018 |
2.9 GHz i9 | 32 GB | 0:30 | 0:04 | 2018-05-19 (commit) | βοΈ | |
π» | MacBook Pro Retina, 13", Early 2015 |
2.7 GHz i5 | 8 GB | 2:25 | 0:31 | 2018-05-19 (commit) | β | |
π» | MacBook Pro Retina, 13", Early 2015 |
2.7 GHz i5 | 8 GB | 1:12 | 0:18 | 2018-05-19 (commit) | βοΈ | |
π» | MacBook Pro Retina, 15", Mid 2018 |
2.9 GHz i9 | 32 GB | 0:32 | 0:04 | 2018-05-19 (commit) | βοΈ | |
β¨οΈ | Custom PC Early 2018 |
i7-8700K 4.70+ GHz | 32 GB | 0:19 | 0:07 | 2018-03-11 (commit) | βοΈ | |
β¨οΈ | Custom PC Early 2016 |
i7-6700k 4.5 GHz | 32 GB | 0:23 | 0:07 | 9.4.1 | 2018-05-19 (commit) | βοΈ |
π» | MacBook Pro Retina, 13", Mid 2018 |
2.7 GHz i7-8559U | 16 GB | 0:27 | 0:09 | 9.4.1 | 2018-05-19 (commit) | βοΈ |
β¨οΈ | Custom PC Early 2018 |
i7-7700k 4.5 GHz | 16 GB | 0:35 | 0:05 | 2018-03-10 | βοΈ | |
β¨οΈ | Custom PC Early 2018 |
i7-8700K 4.70+ GHz | 32 GB | 0:36 | 0:07 | 2018-02-19 (commit) | β | |
β¨οΈ | Custom PC Early 2018 |
i7-7700k 4.5 GHz | 16 GB | 0:48 | 0:07 | 2018-03-10 | β | |
β¨οΈ | Custom PC Late 2015 |
i7-4790k 4.0 GHz | 32 GB | 0:40 | 0:07 | 2018-02-22 (commit) | β | |
π₯ | iMac Pro 10 Core, Late 2017 |
3 GHz Intel Xeon W | 64 GB | 0:41 | 0:07 | 2017-12-28 | β | |
π₯ | iMac Pro 18 Core, Late 2017 |
2.3 GHz Intel Xeon W | 128 GB | 0:47 | 0:07 | 2018-03-07 (commit) | β | |
π₯ | iMac 27" 5K 1TB SSD, Mid 2017 |
4,2 GHz i7 | 40 GB | 0:49 | 0:08 | 2018-01-18 | β | |
π» | MacBook Pro Retina, 15", 2017 |
2.9 GHz i7 | 16 GB | 0:49 | 0:16 | 2017-10-09 | βοΈ | |
π» | MacBook Pro Retina, 15", 2017 |
2.9 GHz i7 | 16 GB | 0:50 | 0:15 | 2017-10-09 | β | |
π» | MacBook Pro Retina, 15", 2016 |
2.9 GHz i7 | 16 GB | 1:04 | 0:09 | 9.4.1 | 2018-07-18 (commit) | βοΈ |
π» | MacBook Pro Retina, 15", 2016 |
2.9 GHz i7 | 16 GB | 1:06 | 0:10 | 9.4.1 | 2018-07-18 (commit) | β |
π» | MacBook Pro Retina, 15", 2015 |
2.5 GHz i7 | 16 GB | 0:51 | 0:09 | 9.2 | 2018-03-02 (commit) | βοΈ |
π₯ | MacPro Late 2013 | 2.7 GHz 12core Intel Xeon E5 | 64 GB | 0:54 | 0:10 | 2018-03-07 (commit) | β | |
π₯ | iMac 27" 256GB SSD, Late 2013 |
3.2 GHz i5 | 24 GB | 0:56 | 0:10 | 9.2 | 2018-03-02 (commit) | βοΈ |
π» | MacBook Pro Retina, 15", Mid 2012 |
2.6 GHz i7-3720QM | 16 GB | 1:04 | 0:13 | 9.4.1 | 2018-05-19 (commit) | βοΈ |
π» | MacBook Pro Retina, 15", Late 2013 |
2.6 GHz i7 | 16 GB | 1:09 | 0:12 | 2018-02-28 | βοΈ | |
π» | MacBook Pro Retina, 15", 2015 |
2.8 GHz i7 | 16 GB | 1:17 | 0:12 | 2018-01-02 | β | |
π» | MacBook Pro Retina, 15", 2015 |
2.5 GHz i7 | 16 GB | 1:20 | 0:09 | 9.2 | 2018-03-02 (commit) | β |
π₯ | iMac 27" 256GB SSD, Late 2013 |
3.2 GHz i5 | 24 GB | 1:27 | 0:10 | 9.2 | 2018-03-02 (commit) | β |
β¨οΈ | Custom Laptop Mid 2018 |
i5-8250u 3.4 GHz | 16 GB | 1:58 | 0:10 | 9.3 | 2018-05-11 | β |
π» | MacBook Pro Retina, 13", 2014 |
2.6 GHz i5 | 8 GB | 2:30 | 0:23 | 2018-01-04 | β | |
Mac Mini Mid 2012, 512 SSD |
2.3 GHz Quad-Core i7 | 16 GB | 1:32 | 0:18 | 2017-10-20 | β | ||
π» | MacBook Pro Retina, 15", 2017 |
2.8 GHz i7 | 16 GB | 1:50 | 0:14 | β | ||
π₯ | iMac 27" 120GB SSD, Mid 2010 |
2.93 GHz i7 | 8 GB | 2:05 | 0:16 | 9.3 | 2018-03-21 | β |
π» | MacBook Retina, 15", Mid 2012 |
2.6 GHz i7 | 8 GB | 2:26 | 0:23 | β | ||
π» | MacBook Pro 13", Mid 2012 |
2.9 GHz i7 | 8 GB | 2:30 | 0:23 | β | ||
Mac Pro Flash Storage, Late 2013 |
3.7 GHz 4-Core Xeon E5 | 32 GB | 1:15 | 0:10 | 9.4.1 | 2018-06-20 (commit) | β | |
Mac Pro Flash Storage, Late 2013 |
3.7 GHz 4-Core Xeon E5 | 32 GB | 0:35 | 0:11 | 9.4.1 | 2018-06-20 (commit) | βοΈ | |
π» | MacBook Pro 13", Mid-2017, 256GB SSD |
2.3 GHz i5 (I5-7360U) | 8 GB | 01:42 | 0:12 | 9.2 | 2018-06-29 | β |
π» | MacBook Pro 13", Mid-2017, 256GB SSD |
2.3 GHz i5 (I5-7360U) | 8 GB | 01:12 | 0:12 | 9.2 | 2018-06-29 | βοΈ |
Mac Mini, Mid-2011, 128GB SSD |
2.3 GHz i5 (I5-2415M) | 8 GB | 03:12 | 0:20 | 9.2 | 2018-07-04 | β | |
Mac Mini, Mid-2011, 128GB SSD |
2.3 GHz i5 (I5-2415M) | 8 GB | 02:04 | 0:20 | 9.2 | 2018-07-04 | βοΈ |
For the test, I decided to use an app that I actually work on: eidolon. Unlike most iOS apps, the project is stable and not under active development, so it's a prime candidate for accurate-ish benchmarking.
For "fresh" builds, I cleaned the build folder (ββ§K) repeatedly until it worked with no permissions problems. Then I sat and waited for Xcode to index the project. I also made sure the simulator (iPad Air 2) was closed, so these times include booting the simulator and launching the app. Each version of Xcode above should use the latest iOS version that it ships with. Then I hit βR and start a timer, only ending it when the app had fully launched.
"Incremental" builds represent a more common use case: changing one file and recompiling with the simulator already running. I added print("hello!")
to application(: didFinishLaunchingWithOptions:)
and hit βR, timing the time it took for the app to launch.
I repeated each test a few times and took their average times.
It would be super-cool if we could perform the above tests on a variety of machines and consolidate the results here. You can follow the instructions to download the code and the project dependencies, and send a pull request adding your own results. I'd super-appreciate it! π
Please note that this project is released with a Contributor Code of Conduct. By participating in this project, you agree to abide by its terms.
This work is licensed under a Creative Commons Attribution 4.0 International License.