Xcode Hardware Performance
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 |
---|---|---|---|---|
MacBook (Retina, 12-inch, Early 2015) | 1.1 GHz Intel Core M | 8 GB | 3:00 | 0:12 |
MacBook Pro (Retina, 15-inch, Early 2013) | 2.4 GHz Intel Core i7 | 8 GB | 0:47 | 0:10 |
MacBook Pro (Retina, 15-inch, Mid 2014) | 2.2 GHz Intel Core i7 | 16 GB | 0:51 | 0:07 |
MacBook Pro (Retina, 15-inch, Mid 2015) | 2.8 GHz Intel Core i7 | 16 GB | 0:39 | 0:07 |
iMac (HDD 1 TB, 21.5-inch, Late 2012) | 2.7 GHz Intel Core i5 | 8 GB | 4:15 | 0:33 |
iMac 5K (512GB Flash, 27-inch, Late 2015) | 4.0Ghz Intel Core i7 | 32 GB | 0:28 | 0:06 |
Mac Pro (Flash Storage, Late 2013) | 3.5 GHz 6-Core Intel Xeon E5 | 32 GB | 0:30 | 0:05 |
Specifications
For the test, I decided to use an app that I actually work on: eidolon.
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 was closed, so these times include booting the simulator and launching the app. 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.
Contributing
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](/Code of Conduct.md).
License
This work is licensed under a Creative Commons Attribution 4.0 International License.