Skip to content

XcodeBenchmark measures the compilation time of a large codebase on iMac, MacBook, and Mac Pro

License

Notifications You must be signed in to change notification settings

mluisbrown/XcodeBenchmark

Repository files navigation

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.

Note

PR merging will be performed on a best-effort basis.
If a device you are looking for is not on the list below, check out open issues and PRs.

Xcode 13.0 or above

DeviceCPURAMSSDHDDXcodemacOSTime(sec)
MacBook Pro 14" 2021M1 Pro 10-core321TB13.112.0.198
MacBook Pro 16" 2021M1 Max 10-core321TB13.112.0.198
MacBook Pro 16" 2021M1 Pro 10-core161TB13.112.0.1102
MacBook Pro 14" 2021M1 Pro 8-core1651213.112.0.1109
MacBook Pro 13" 2020M1 8-core161TB13.112.0.1130
iMac 24" 2021M1 8-core1651213.112.0.1130
MacBook Pro 16" 2019i9 2.4 GHz 8-core321TB13.011.6223
Mac mini 2018i5 3.0 Ghz 6-core825613.012.0.1235
MacBook Pro 16" 2019i7 2.6 GHz 6-core3251213.011.6248
MacBook Pro 15" 2018i9 2.9 GHz 6-core321TB13.011.6263
MacBook Pro 13" 2018i7 2.7 GHz 4-core825613.011.6336

Xcode 12.5

DeviceCPURAMSSDHDDXcodemacOSTime(sec)
iMac 24" 2021M1 8-core1651212.512.0.1124
MacBook Pro 16" 2019i7 2.6 GHz 6-core1651212.511.4282
MacBook Pro 15" 2015i7 2.5 GHz 4-core1651212.511.2.3361

Xcode 12

DeviceCPURAMSSDHDDXcodemacOSTime(sec)
Mac Pro 2019Xeon 2.5 GHz 28-core964TB12.211.0.190
Mac mini 2020M1 8-core161TB12.211.0116
MacBook Pro 13" 2020M1 8-core161TB12.211.0117
MacBook Air 13" 2020M1 8c (8c GPU)1651212.211.0.1128
Mac mini 2020M1 8-core825612.211.0.1130
MacBook Air 13" 2020M1 8c (7c GPU)825612.211.0.1137
iMac 27" 2019i9 3.6 GHz 8-core642TB12.111.0.1145
iMac 27" 2020i9 3.6 GHz 10-core1281TB12.211.0.1146
iMac Pro 27" 2017Xeon 3.2 GHz 8-Core321TB12.210.15.7158
iMac 27" 2019i9 3.6 GHz 8-core4051212.211.0.1163
MacBook Pro 16" 2019i9 2.4 GHz 8-core3251212.211.0.1176
Mac mini 2018i7 3.2 GHz 6-core3251212.211.0.1192
MacBook Pro 16" 2019i9 2.3 GHz 8-core321TB12.211.0.1221
Mac mini 2018i7 3.2 GHz 6-core161TB12.010.15.5228
iMac 27" 2017i7 4.2 GHz 4-core161TB12.211.0.1246
MacBook Pro 16" 2019i7 2.6 GHz 6-core1651212.211.0.1250
MacBook Pro 13" 2020i5 2.0 GHz 4-core161TB12.211.0.1265
MacBook Pro 15" 2017i7 2.8 GHz 4-core1625612.211.0.1282
MacBook Pro 15" 2015i7 2.2 GHz 4-core1625612.111.0.1324
MacBook Pro 15" 2015i7 2.2 GHz 4-core1625612.110.15.5334
MacBook Pro 15" 2014i7 2.5 GHz 4-core1625612.210.15.7343
MacBook Pro 15" 2013i7 2.3 GHz 4-core1651212.210.15.7374
iMac 27" 2011i7 3.4 GHz 4-core1625012.110.15.7378
MacBook Pro 13" 2017i5 2.3 GHz 2-core1625612.211.0.1448
MacBook Pro 13" 2016i5 2.9 GHz 2-core825612.211.0.1518
MacBook Pro 13" 2016i5 2.0 GHz 2-core825612.211.0.1574
MacBook Pro 13" 2015i5 2.7 Ghz 2-core851212.210.15.7597
MacBook Air 13" 2015i7 2.2 Ghz 2-core825612.010.15.7610
MacBook Air 13" 2020i3 1.1 GHz 2-core825612.211.0.1700
iMac 21.5" 2017i5 3.0 GHz 4-core161TB12.211.0.1725
MacBook Air 2014i5 1.4 GHz 2-core412812.211.0.1894
MacBook Pro 2010i5 2.4 GHz 2-core848012.410.15.71043

Xcode 11

DeviceCPURAMSSDHDDXcodemacOSTime(sec)
iMac 27" 2020i9 3.6 GHz 10-core6451211.610.15.6217
iMac Pro 27" 2017Xeon 3.0 GHz 10-core641TB11.710.15.6222
iMac 27" 2020i7 3.8 GHz 8-core6451211.610.15.6229
iMac 27" 2020i7 3.8 GHz 8-core3251211.610.15.6229
iMac 27" 2019i9 3.6 GHz 8-core642TB11.610.15.6252
iMac Pro 27" 2017Xeon 3.2 GHz 8-core321TB11.610.15.6263
Mac Mini 2018i7 3.2 GHz 6-core1651211.710.15.5300
MacBook Pro 16" 2019i9 2.3 GHz 8-core322TB11.610.15.6328
MacBook Pro 16" 2019i7 2.6 GHz 6-core1651211.610.15.6353
Mac Mini 2018i5-8500B 3.0 GHz 6-core851211.710.15.6383
iMac 27" 2017i7 4.2 GHz 4-core482TB11.710.15.6411
iMac 21.5" 2017i7-7700 3.6 GHz 4-core161TB11.710.16.6419
MacBook Pro 15" 2018i7 2.6 GHz 6-core1651211.610.15.6440
Mac Pro 2013E5-1650 v2 3.5 GHz 6-core321TB11.710.15.6518
MacBook Pro 15" 2017i7 2.9 GHz 4-core1651211.610.15.6583
MacBook Pro 15" 2015i7 2.2 GHz 4-core1625611.710.15.6594
MacBook Pro 15" 2016i7 2.7 GHz 4-core161TB11.710.15.6642
Mac Mini 2014i5 2.6 GHz 2-core81TB11.710.15.61193

Custom Hardware - Xcode 12.5 or above

DeviceCPURAMSSDHDDXcodemacOSTime(sec)Comments
Hackintoshi7-9700K 3.6 Ghz 8-core165122TB12.5.111.4177

Custom Hardware - Xcode 12

DeviceCPURAMSSDHDDXcodemacOSTime(sec)Comments
Hackintoshi9-10850K 3.6 Ghz 10-core641TB12.210.15.7113
Hackintoshi9-10900k 3.7 Ghz 10-core645126TB12.211.0.1122
NLEstation 2020i9 3.6 GHz 8-core641TB12.210.15.7129
Hackintoshi7-10700K 3.8 Ghz 8-core321TB12.210.15.7130
HackintoshAMD 3800x 4.2 Ghz 8-core641TB12.210.15.6137
RyzentoshR9 3900 3.8 Ghz 12-core3251212.110.15.4161
RyzentoshR5 3600 3.6 Ghz 6-core1651212.310.15.7175
Hackintoshi5-9400 2.9 Ghz 6-core325122TB12.110.15.7191
Hackintoshi3-10100 3.6 Ghz 4-core321TB12.110.15.7233
Hackintoshi7-4770K 3.5 Ghz 4-core162TB8TB12.210.15.7276
QEMU VMXeon 1.8 Ghz 4-core83212.210.15.7775

Custom Hardware - Xcode 11

DeviceCPURAMSSDHDDXcodemacOSTime(sec)Comments
Hackintoshi5-8400 2.8 Ghz 6-core3251211.610.15.6409
RyzentoshR5 3600 3.6 Ghz 6-core161TB11.710.15.6312

Set up

Since Oct 23, 2021, XcodeBenchmark only supports Xcode 13.0 or above.

  • Download and install Xcode.
  • Open Xcode and install additional tools (Xcode should suggest it automatically).
  • Download and unarchive XcodeBenchmark project.

Before each test

  1. Disconnect the network cable and turn off WiFi.
  2. Make sure to disable all software running at startup
    • Go to System Preferences -> Users and Groups -> User -> Login Items.
    • Empty the list.
  3. Update Battery settings
    • Go to System Preferences -> Battery -> Battery/Power Adapter -> Turn display off and set 15 min.
  4. Reboot and cool down your Mac.
  5. Connect to the power adapter if you're using a MacBook.

Running a test

  1. Open the Terminal app.
  2. Write cd and drag & drop XcodeBenchmark folder to the Terminal app to form cd path/to/xcode-benchmark.
  3. Run sh benchmark.sh in Terminal.
  4. When XcodeBenchmark has completed you will see this information.
  5. Upload your results, see Contribution section.

FAQ

Q: What's inside?

A framework that includes 42 popular CocoaPods libraries and 70+ dependencies in total.

Languagefilesblankcommentcode
C/C++ Header278558618143659215644
C++7502477130788182663
Objective C8822779723183148244
Swift11222182135225113945
C390150642331984119
Objective C++692980202615561
Markdown614865115131
XML14410221013047
Bourne Shell32442091321
JSON22101114
Pascal287185180
YAML1005
SUM:6231157270258605790974

Q: What do the results mean?

  1. First of all, the project is huge. Most projects are of a much smaller size.
  2. 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.

YouTubers and bloggers

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.

Contribution

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.

Contributors

About

XcodeBenchmark measures the compilation time of a large codebase on iMac, MacBook, and Mac Pro

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift64.5%
  • Shell19.4%
  • Ruby16.1%