XcodeBenchmark
contains a large codebase to measure the compilation time in Xcode.
You are probably familiar with the following question:
"Should I buy an i5, i7, or even i9 processor for iOS/macOS development?".
XcodeBenchmark
is initially created for Max Tech YouTube channel to compare the performance of new iMacs 2020.
I believe the results will help developers to make the right cost/performance trade-off decision when choosing their next Mac.
Device | CPU | RAM | SSD | HDD | Xcode | macOS | Time(sec) |
---|---|---|---|---|---|---|---|
MacBook Pro 15" 2015 | i7 2.5 GHz 4-core | 16 | 512 | 12.5 | 11.2.3 | 361 |
Device | CPU | RAM | SSD | HDD | Xcode | macOS | Time(sec) |
---|---|---|---|---|---|---|---|
Mac Pro 2019 | Xeon 2.5 GHz 28-core | 96 | 4TB | 12.2 | 11.0.1 | 90 | |
Mac mini 2020 | Apple M1 8-core | 16 | 1TB | 12.2 | 11.0 | 116 | |
MacBook Pro 13" 2020 | Apple M1 8-core | 16 | 1TB | 12.2 | 11.0 | 117 | |
MacBook Air 13" 2020 | Apple M1 8c (8c GPU) | 16 | 512 | 12.2 | 11.0.1 | 128 | |
Mac mini 2020 | Apple M1 8-core | 8 | 256 | 12.2 | 11.0.1 | 130 | |
MacBook Air 13" 2020 | Apple M1 8c (7c GPU) | 8 | 256 | 12.2 | 11.0.1 | 137 | |
iMac 27" 2019 | i9 3.6 GHz 8-core | 64 | 2TB | 12.1 | 11.0.1 | 145 | |
iMac 27" 2020 | i9 3.6 GHz 10-core | 128 | 1TB | 12.2 | 11.0.1 | 146 | |
iMac Pro 27" 2017 | Xeon 3.2 GHz 8-Core | 32 | 1TB | 12.2 | 10.15.7 | 158 | |
iMac 27" 2019 | i9 3.6 GHz 8-core | 40 | 512 | 12.2 | 11.0.1 | 163 | |
MacBook Pro 16" 2019 | i9 2.4 GHz 8-core | 32 | 512 | 12.2 | 11.0.1 | 176 | |
Mac mini 2018 | i7 3.2 GHz 6-core | 32 | 512 | 12.2 | 11.0.1 | 192 | |
MacBook Pro 16" 2019 | i9 2.3 GHz 8-core | 32 | 1TB | 12.2 | 11.0.1 | 221 | |
Mac mini 2018 | i7 3.2 GHz 6-core | 16 | 1TB | 12.0 | 10.15.5 | 228 | |
iMac 27" 2017 | i7 4.2 GHz 4-core | 16 | 1TB | 12.2 | 11.0.1 | 246 | |
MacBook Pro 16" 2019 | i7 2.6 GHz 6-core | 16 | 512 | 12.2 | 11.0.1 | 250 | |
MacBook Pro 13" 2020 | i5 2.0 GHz 4-core | 16 | 1TB | 12.2 | 11.0.1 | 265 | |
MacBook Pro 15" 2017 | i7 2.8 GHz 4-core | 16 | 256 | 12.2 | 11.0.1 | 282 | |
MacBook Pro 15" 2015 | i7 2.2 GHz 4-core | 16 | 256 | 12.1 | 11.0.1 | 324 | |
MacBook Pro 15" 2015 | i7 2.2 GHz 4-core | 16 | 256 | 12.1 | 10.15.5 | 334 | |
MacBook Pro 15" 2014 | i7 2.5 GHz 4-core | 16 | 256 | 12.2 | 10.15.7 | 343 | |
MacBook Pro 15" 2013 | i7 2.3 GHz 4-core | 16 | 512 | 12.2 | 10.15.7 | 374 | |
iMac 27" 2011 | i7 3.4 GHz 4-core | 16 | 250 | 12.1 | 10.15.7 | 378 | |
MacBook Pro 13" 2017 | i5 2.3 GHz 2-core | 16 | 256 | 12.2 | 11.0.1 | 448 | |
MacBook Pro 13" 2016 | i5 2.9 GHz 2-core | 8 | 256 | 12.2 | 11.0.1 | 518 | |
MacBook Pro 13" 2016 | i5 2.0 GHz 2-core | 8 | 256 | 12.2 | 11.0.1 | 574 | |
MacBook Pro 13" 2015 | i5 2.7 Ghz 2-core | 8 | 512 | 12.2 | 10.15.7 | 597 | |
MacBook Air 13" 2015 | i7 2.2 Ghz 2-core | 8 | 256 | 12.0 | 10.15.7 | 610 | |
MacBook Air 13" 2020 | i3 1.1 GHz 2-core | 8 | 256 | 12.2 | 11.0.1 | 700 | |
iMac 21.5" 2017 | i5 3.0 GHz 4-core | 16 | 1TB | 12.2 | 11.0.1 | 725 | |
MacBook Air 2014 | i5 1.4 GHz 2-core | 4 | 128 | 12.2 | 11.0.1 | 894 |
Device | CPU | RAM | SSD | HDD | Xcode | macOS | Time(sec) |
---|---|---|---|---|---|---|---|
iMac 27" 2020 | i9 3.6 GHz 10-core | 64 | 512 | 11.6 | 10.15.6 | 217 | |
iMac Pro 27" 2017 | Xeon 3.0 GHz 10-core | 64 | 1TB | 11.7 | 10.15.6 | 222 | |
iMac 27" 2020 | i7 3.8 GHz 8-core | 64 | 512 | 11.6 | 10.15.6 | 229 | |
iMac 27" 2020 | i7 3.8 GHz 8-core | 32 | 512 | 11.6 | 10.15.6 | 229 | |
iMac 27" 2019 | i9 3.6 GHz 8-core | 64 | 2TB | 11.6 | 10.15.6 | 252 | |
iMac Pro 27" 2017 | Xeon 3.2 GHz 8-core | 32 | 1TB | 11.6 | 10.15.6 | 263 | |
Mac Mini 2018 | i7 3.2 GHz 6-core | 16 | 512 | 11.7 | 10.15.5 | 300 | |
MacBook Pro 16" 2019 | i9 2.3 GHz 8-core | 32 | 2TB | 11.6 | 10.15.6 | 328 | |
MacBook Pro 16" 2019 | i7 2.6 GHz 6-core | 16 | 512 | 11.6 | 10.15.6 | 353 | |
Mac Mini 2018 | i5-8500B 3.0 GHz 6-core | 8 | 512 | 11.7 | 10.15.6 | 383 | |
iMac 27" 2017 | i7 4.2 GHz 4-core | 48 | 2TB | 11.7 | 10.15.6 | 411 | |
iMac 21.5" 2017 | i7-7700 3.6 GHz 4-core | 16 | 1TB | 11.7 | 10.16.6 | 419 | |
MacBook Pro 15" 2018 | i7 2.6 GHz 6-core | 16 | 512 | 11.6 | 10.15.6 | 440 | |
Mac Pro 2013 | E5-1650 v2 3.5 GHz 6-core | 32 | 1TB | 11.7 | 10.15.6 | 518 | |
MacBook Pro 15" 2017 | i7 2.9 GHz 4-core | 16 | 512 | 11.6 | 10.15.6 | 583 | |
MacBook Pro 15" 2015 | i7 2.2 GHz 4-core | 16 | 256 | 11.7 | 10.15.6 | 594 | |
MacBook Pro 15" 2016 | i7 2.7 GHz 4-core | 16 | 1TB | 11.7 | 10.15.6 | 642 | |
Mac Mini 2014 | i5 2.6 GHz 2-core | 8 | 1TB | 11.7 | 10.15.6 | 1193 |
Device | CPU | RAM | SSD | HDD | Xcode | macOS | Time(sec) | Comments |
---|
Device | CPU | RAM | SSD | HDD | Xcode | macOS | Time(sec) | Comments |
---|---|---|---|---|---|---|---|---|
Hackintosh | i9-10850K 3.6 Ghz 10-core | 64 | 1TB | 12.2 | 10.15.7 | 113 | ||
Hackintosh | i9-10900k 3.7 Ghz 10-core | 64 | 512 | 6TB | 12.2 | 11.0.1 | 122 | |
NLEstation 2020 | i9 3.6 GHz 8-core | 64 | 1TB | 12.2 | 10.15.7 | 129 | ||
Hackintosh | i7-10700K 3.8 Ghz 8-core | 32 | 1TB | 12.2 | 10.15.7 | 130 | ||
Hackintosh | AMD 3800x 4.2 Ghz 8-core | 64 | 1TB | 12.2 | 10.15.6 | 137 | ||
Ryzentosh | R9 3900 3.8 Ghz 12-core | 32 | 512 | 12.1 | 10.15.4 | 161 | ||
Ryzentosh | R5 3600 3.6 Ghz 6-core | 16 | 512 | 12.3 | 10.15.7 | 175 | ||
Hackintosh | i5-9400 2.9 Ghz 6-core | 32 | 512 | 2TB | 12.1 | 10.15.7 | 191 | |
Hackintosh | i3-10100 3.6 Ghz 4-core | 32 | 1TB | 12.1 | 10.15.7 | 233 | ||
Hackintosh | i7-4770K 3.5 Ghz 4-core | 16 | 2TB | 8TB | 12.2 | 10.15.7 | 276 | |
QEMU VM | Xeon 1.8 Ghz 4-core | 8 | 32 | 12.2 | 10.15.7 | 775 |
Device | CPU | RAM | SSD | HDD | Xcode | macOS | Time(sec) | Comments |
---|---|---|---|---|---|---|---|---|
Hackintosh | i5-8400 2.8 Ghz 6-core | 32 | 512 | 11.6 | 10.15.6 | 409 | ||
Ryzentosh | R5 3600 3.6 Ghz 6-core | 16 | 1TB | 11.7 | 10.15.6 | 312 |
Since May 3, 2021, XcodeBenchmark must be used with Xcode 12.5 or above.
- Download and install Xcode.
- Open Xcode and install
additional tools
(Xcode should suggest it automatically). - Download and unarchive XcodeBenchmark project.
- Disconnect the network cable and turn off WiFi.
- Make sure to disable all software running at startup
- Go to
System Preferences
->Users and Groups
->User
->Login Items
. - Empty the list.
- Go to
- Update
Energy Saver
settings- Go to
System Preferences
->Energy Saver
->Turn display off
and set 15 min.
- Go to
- Reboot and cool down your Mac.
- Connect to the power adapter if you use MacBook.
- Open the
Terminal
app. - Write
cd
and drag & dropXcodeBenchmark
folder to theTerminal
app to formcd path/to/xcode-benchmark
. - Run
sh benchmark.sh
inTerminal
. - When
XcodeBenchmark
has completed you will see this information. - Upload your results, see Contribution section.
Q: What's inside?
A framework that includes 42 popular CocoaPods libraries and 70+ dependencies in total.
Language | files | blank | comment | code |
---|---|---|---|---|
C/C++ Header | 2785 | 58618 | 143659 | 215644 |
C++ | 750 | 24771 | 30788 | 182663 |
Objective C | 882 | 27797 | 23183 | 148244 |
Swift | 1122 | 21821 | 35225 | 113945 |
C | 390 | 15064 | 23319 | 84119 |
Objective C++ | 69 | 2980 | 2026 | 15561 |
Markdown | 61 | 4865 | 1 | 15131 |
XML | 144 | 1022 | 10 | 13047 |
Bourne Shell | 3 | 244 | 209 | 1321 |
JSON | 22 | 1 | 0 | 1114 |
Pascal | 2 | 87 | 185 | 180 |
YAML | 1 | 0 | 0 | 5 |
SUM: | 6231 | 157270 | 258605 | 790974 |
Q: What do the results mean?
- First of all, the project is huge. Most projects are of a much smaller size.
- The results show relative performance in Xcode, compared to other Macs running under similar conditions.
Q: Why is CocoaPods not excluded from git-repo?
- The project is also used by non-programmers. Let's keep it simple.
Q: Will it affect my other Xcode projects?
- A separate build folder is created for the benchmark run that is then deleted after it finishes. The folder goes to about 2.5GB.
You are free to use these results in your videos and articles as well as to run XcodeBenchmark to compare Macs. Please make sure to add the link to this repository.
Since May 3, 2021, XcodeBenchmark must be used with Xcode 12.5 or above.
- If you have any non-Apple hardware components - submit your results to the
Custom Hardware
table. - Submit a pull request.
Make sure:
- All steps are performed
Time
column is still sorted after insertion.- Attach a screenshot with a compilation time. Example.
- The content in cells is centered.
- Maxim Eremenko
- Max Tech YouTube channel
- @bitsmakerde
- @ivanfeanor
- @sverrisson
- @radianttap
- @rynaardb
- @ekhodykin
- @N0un
- Paul Zabelin
- @theome
- @Kuluum
- @villy21
- @zhi6w
- @soorinpark
- @igorkulman
- @matopeto
- @morid1n
- @passatgt
- @ignatovsa
- @azonov
- @euwars
- @samadipour
- @dmcrodrigues
- @MeshkaniMohammad
- @CasperNEw
- @iOSleep
- @iPader
- @boltomli
- @Jimmy-Lee
- @kotalab
- @valeriyvan
- @twlatl
- @ypwhs
- @freeubi
- @bariscck
- @thisura98
- @vitallii-t
- @kenji21
- @hornmichaels
- @sahilsatralkar
- @idevid
- @vincentneo
- @BradPatras
- @LightFocus
- @pablosichert
- @vm-tester
- @rursache
- @wendyliga
- @mlch911