ashfurrow / xcode-hardware-performance

Results from running Xcode on a non-trivial open source project using various Macs
Other
1.13k stars 115 forks source link

want to see the new arm mac slicon xcode benchmark peformance #131

Closed gakaki closed 3 years ago

gakaki commented 4 years ago

i guess can run in 35 seconds like the 9900k ?

Linslav commented 3 years ago

Yep, let's see that M1 perform. Would love to see the difference between MacBook Pro M1 and MacBook Air M1.

Edit: We have some promising results from Dave Lee https://youtu.be/XQ6vX6nmboU?t=187

Twitter thread by Paul Hudson, also very positive: https://twitter.com/twostraws/status/1328700910546132993

pawelurb commented 3 years ago

Unfortunately, eidolon is a project that is no longer under active development but it still can be built with no issues on any Intel machine running Xcode 12.2. It also uses CocoaPods for dependency management, which doesn't seem to be fully compatible with M1 macs yet. Luckily, installing project dependencies via CocoaPods is not an issue under Apple Silicon as long as you're running your Terminal using Rosetta.

However, the problem with building eidolon on M1 lies in the use of third party frameworks. To be precise two of the dependencies linked to the projects are having issues building on Apple Silicon: HockeySDK-iOS and cardflight-v4-ios. Since both of these repositories take advantage of closed-source frameworks it is not possible to recompile them for Apple Silicon unless the maintainer decides to do so  - and due to deprecation of HockeyApp for App Center it is rather not going to happen at least for HockeySDK.

My approach

Since eidolon in its original form doesn't build on Apple Silicon I decided to investigate how these dependencies are used inside the app. And since HockeyApp was used solely for analytics with CartFlight SDK being used only in CartHandler.swift I decided to fork the project and remove these dependencies to make the project run. Some of the actual models were replaced with dummy ones and you can find the working fork on my GitHub profile.

Having made these changes to the project structure I think my clean/incremental build times should rather not be compared directly with times in the xcode-hardware-performance repository and that's the reason why I'm not submitting a pull request (at least for now). But having in mind that changes made to the project are overall pretty minor I assumed build times between original and forked version of eidolon will be noticeable but not significant.

Therefore, I decided to measure the M1 performance by:

And finally:

The numbers

🖥 Computer Model CPU RAM Fresh Build Time Incremental Build Time Xcode Version Date & Commit Hash Fork
🖥 MacBook Pro 13" (Early 2015) i5-5257U (2.7 GHz) 16 GB 1:48 0:17 12.2 2020-11-20 (commit)
🖥 MacBook Pro 13" (Early 2015) i5-5257U (2.7 GHz) 16 GB 1:32,6 0:15 12.2 2020-11-20 (commit) ✔️
🖥 Mac Mini (Late 2020) Apple M1 16 GB 0:19,7 0:04 12.2 2020-11-20 (commit) ✔️

TL;DR

Since eidolon doesn't build on Apple Silicon I decided to fork it and remove its dependencies that are currently failing to build. In the table above you can compare results of the original project and the fork measured on the Intel Mac with the results measured on the M1 Mac Mini running a forked version of the project. The changelog between the original project and the fork can be found here.

michael-mckenna commented 3 years ago

@pawelurb nice!!!